pipfile和pipfile.lock、virtualenv、pipenv、pip

我们先说说virtualenv怎么用

  1. 首先,我们用pip安装virtualenv:
$ pip3 install virtualenv
  1. 然后,
    第一步,创建目录(并且移到当前项目目录下):
$ mkdir myproject
$ cd myproject/
$
  1. 第二步,创建一个独立的Python运行环境,命名为venv:
$ virtualenv --no-site-packages venv
Using base prefix '/usr/local/.../Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.

命令virtualenv就可以创建一个独立的Python运行环境。
参数--no-site-packages,使已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。

  1. 新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source进入该环境:
Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$

注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。

  1. 下面正常安装各种第三方包,并运行python命令:
(venv)Mac:myproject michael$ pip install jinja2
...
Successfully installed jinja2-2.7.3 markupsafe-0.23
(venv)Mac:myproject michael$ python myapp.py
...
  1. 在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。

  2. 退出当前的venv环境,使用deactivate命令:

(venv)Mac:myproject michael$ deactivate 
Mac:myproject michael$ 
  1. 此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。

完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。

virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。




这里说pipenv

在Python打包的上下​​文中,似乎Pipfile / Pipfile.lock旨在替换requirements.txt。
Pipenv是一个包和虚拟环境管理工具,它使用Pipfile和Pipfile.lock文件来实现这些目标。具体来说他是pip、pipfile、virtualenv的结合体。让包安装、包依赖管理、和虚拟环境管理更加方便,
Pipenv以一种默认的标准方式为您处理虚拟环境(不再需要激活和停用)。下面是一些帮助您入门的基础知识,请访问pipenv网站了解更多信息。

入门

使用pip安装pipenv(会自动安装在我们的python的bin目录下)

$ pip install pipenv

用下面的命令检查pipenv是否已经安装:

$ pipenv --version

虚拟环境通常需要用Virtualenv来创建,因为pipenv集成了virtualenv,我们就使用pipenv更方便的管理虚拟环境和环境依赖包
在自己想创建的位置创建一个helloflask项目目录(示例文件夹)

  1. 首先要确保我们当前的工作目录在示例程序项目(helloflask)的根目录在这里插入图片描述
  2. 然后使用pipenv install命令为当前的项目创建虚拟环境
    在这里插入图片描述
    如果想指定创建的虚拟环境的Python版本,可以使用下面的命令。
pipenv --python 3.6 #指定使用Python3.6的虚拟环境
pipenv --two        #使用系统的Python2在创建虚拟环境
pipenv --three      #使用系统的Python3在创建虚拟环境

#注意:以上三个参数只能单独使用。它们还具有破坏性,会删除当前的虚拟环境,然后用适当版本的虚拟环境替代。当给定了一个Python版本的时候,Pipenv会自动扫描系统中能够匹配给定的Python版本的Python解释器,没指定版本时,使用系统默认的Python版本。
  1. 执行完命令,项目文件夹会生成两个文件,Pipfile和Pipfile.lock。(如果命令执行前项目目录中不存在 Pipfile 文件,该命令将会创建一个 Pipfile 文件。如果已经有Pipfile 文件已经存在,则会根据这个Pipfile生成虚拟环境。)

默认情况下,pipenv会统一管理所有虚拟环境,在Linux或macOS系统中,由上图运行可得,会在 ~/.local/share/virtualenvs/目录下创建,在windows中,虚拟环境文件夹会在C:\Users\Administrator\.virtualenvs\目录下创建。虚拟环境目录名称的形式为“当前项目目录名+一串随机字符”,比如helloflask-1RVeSQmm

如果你想在项目目录内创建虚拟环境文件夹,可以设置环境变量PIPENV_VENV_IN_PROJECT,这时名为.venv的虚拟环境目录将在项目根目录被创建。

Profile内容解析

打开Profile文件,可以看到如下内容。

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.7"

source用来设置仓库地址,即从哪下载虚拟环境所需要的包
packages用来指定项目依赖的包,即你安装了的包
dev-packages用来指定开发环境需要的包,这类包只用于开发过程,不用与生产环境,比如单元测试相关的包,只在开发阶段有用,这样分开便于管理。
requires 中指定目标Python版本

Pipfile.lock文件

该Pipfile.lock是用来规定的基础上,目前在包装Pipfile,应该使用那些特定版本,避免依赖于对方破坏你的项目的依赖关系树自动升级包的风险。该文件用来保证包的完整性。记住,任何情况下不要手动修改该文件!

您可以使用$ pipenv lock锁定当前安装的软件包
项目提交时,可将Pipfile 文件和Pipfile.lock文件一并提交,给其他开发人员克隆下载,他们可以根据此Pipfile文件运行命令pipenv install生成自己的虚拟环境。
一个好消息是,PyCharm2018.2开始支持pipenv了。我们也可以在创建项目时使用Pipenv,如图
在这里插入图片描述
4. 在单独使用Virtualenv时,我们通常显式地激活虚拟环境,在pipenv中,可以使用pipenv shell命令显式地激活虚拟环境
在这里插入图片描述
5. pipenv会启动一个激活虚拟环境的子shell,现在你会发现命令行提示符前添加了虚拟环境名“(虚拟环境名称)$”(我这里只显示了个项目名称)
6.
6. 这说明我们已经成功激活了虚拟环境,现在你的所有命令都会在虚拟环境中执行,当你需要退出虚拟环境时,使用exit命令
在这里插入图片描述
退出虚拟环境后,所有命令都是在本地的python解释器上执行了
7.除了显式地激活虚拟环境,pipenv还提供了pipenv run命令,这个命令允许你不显式地激活虚拟环境,即可在当前项目的虚拟环境中执行命令,比如:

$ pipenv run python hello.py

这里使用的是虚拟环境中的python解释器,而不是全局的python解释器。
在这里插入图片描述

总结:

pipenv install 创建虚拟环境

pipenv shell    进入虚拟环境(如果不存在,则创建并进入虚拟环境)

pipenv install flask   安装模块

pipenv uninstall flask 卸载模块

pipenv graph     查看模块之间的依赖关系

pip list        查看虚拟环境所有模块

exit          退出虚拟环境

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值