Python虚拟环境pipenv

使用python开发的都知道,python环境很头痛。兼容性问题比较大,好在大牛们开发了各种虚拟工具解决问题。 通常使用比较多的有virtualenv和pyenv但是我们今天推荐另一更加优秀的pipenv。
pipenv是requests库作者Kenneth Reitz编写的一个用于创建和管理Python虚拟环境的工具。
pipenv结合了virtualenv和pyenv的优点。

  • 不用再单独使用 virtualenv、pyenv 和 pip 了,现在它们结合到了一起。
  • 不用再维护 requirement.txt 了,使用 Pipfile 和 Pipfile.lock 来代替。
  • 可以在开发环境使用多个 python 版本。
  • 在安装的 pyenv 条件下,可以自动安装需要的 python 版本。
  • 安全,广泛地使用 Hash 校验,能够自动曝露安全漏洞。
  • 随时查看图形化的依赖关系。

1.安装

windows:

pip install pipenv

Linux下:

sudo pip install pipenv

Mac下:

brew install pipenv

Mac下的升级:

brew upgrade pipenv

虚拟环境安装路径: .local/share/virtualenvs/pipenv-sS7qIW7B

2.使用

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where          显示项目文件所在路径
  --venv           显示虚拟环境实际文件所在路径
  --py             显示虚拟环境Python解释器所在路径
  --envs           显示虚拟环境的选项变量
  --rm             删除虚拟环境
  --bare           最小化输出
  --completion     完整输出
  --man            显示帮助页面
  --three / --two  使用Python 3/2创建虚拟环境(默认使用系统安装)
  --python TEXT    指定某个Python版本作为虚拟环境的安装源
  --site-packages  附带安装原Python解释器中的第三方库
  --jumbotron      An easter egg, effectively.
  --version        版本信息
  -h, --help       帮助信息

可使用的命令

Commands:
  check      检查安全漏洞
  graph      显示当前依赖关系图信息
  install    安装虚拟环境或者第三方库
  lock       锁定并生成Pipfile.lock文件
  open       在编辑器中查看一个库
  run        在虚拟环境中运行命令
  shell      进入虚拟环境
  uninstall  卸载一个库
  update     卸载当前所有的包,并安装它们的最新版本

安装

mkdir pipenvtest
cd pipenvtest
pipenv install

Mac下的使用展示:

--two或--three参数,它将分别使用Python2或3来初始化你的虚拟环境,否则将使用默认的Python版本。

成功之后会在当前目录下创建两个文件夹Pipfile和Pipfile.lock
Pipfile:

[[source]]
name = "pypi"
url = "https://pypi.org/simple" # 定义了源地址
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.7" # python版本号

也可以指定具体的ptyhon版本pipenv install --python 3.6

3.安装第三方模块

Pipfile定义包文件,是用来替代requirements.txt的。 我们安装requests来测试一下:

pipenv install requests

输出如下:

192:pipenv yuh$ pipenv install requests
Installing requests…
Adding requests to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock (444a6d) out of date, updating to (a65489)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (444a6d)!
Installing dependencies from Pipfile.lock (444a6d)…
  ?   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 5/5 — 00:00:04
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

成功之后,Pipfile将会改变

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

[dev-packages]

[packages]
requests = "*" #新安装的模块

[requires]
python_version = "3.7"

Pipfile.lock 则包含你的系统信息,所有已安装包的依赖包及其版本信息,以及所有安装包及其依赖包的 Hash 校验信息。

3.1安装指定版本包

pipenv install requests==2.18.1

4.卸载第三方包

pipenv uninstall requests //或者 pipenv requests --all

5.更新安装包

pipenv update requests

6.更新所有包

pipenv update

7.查看虚拟环境目录

pipenv --venv

结果

$ pipenv --venv
/Users/yuh/.local/share/virtualenvs/pipenv-sS7qIW7B

8.查看依赖树

pipenv graph

结果:

$ pipenv graph
requests==2.21.0
  - certifi [required: >=2017.4.17, installed: 2019.3.9]
  - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
  - idna [required: >=2.5,<2.9, installed: 2.8]
  - urllib3 [required: >=1.21.1,<1.25, installed: 1.24.1]

9.进/退出虚拟环境

pipenv shell
exit //或者 ctrl+d

10.虚拟环境中运行命令

使用run参数,提供要运行的命令:

pipenv run python

这将使用当前虚拟环境关联的Python解释器,执行命令 或者简单的执行脚本:

pipenv run python test.py

在shell(不是pipenv的终端)中设置别名

alias pr="pipenv run python" # pr指令名称 类似su

后面就可以使用pr t.py,代替pipenv run python了。

声明:原创文章,版权所有,转载请注明出处,https://litets.com。