Requests神级库!你会吗?不会我教你好了!另一神器Pipenv的用法
简介
进群:125240963 即可获取数十套PDF哦!
Pipenv,它的项目简介为 Python Development Workflow for Humans,是 Python 著名的 requests 库作者 kennethreitz 写的一个包管理工具,它可以为我们的项目自动创建和管理虚拟环境并非常方便地管理 Python 包,现在它也已经是 Python 官方推荐的包管理工具。
安装
本文内容基于 Python 3.6 说明,默认的 Python 解释器命令为 python3,包管理工具命令为 pip3。
Pipenv 是基于 Python 开发的包,所以可以直接用 pip 来安装,命令如下:
1
pip3 install pipenv
另外还有多种安装方式,如 Pipsi、Nix、Homebrew,安装方式可以参考:http://pipenv.readthedocs.io/en/latest/#install-pipenv-today。
接下来我们首先验证一下当前的项目是没有创建虚拟环境的,调用如下命令:
执行完毕之后,样例输出如下:
实际上这也和 virtualenv 激活的流程一样,也是调用了类似 source venv/bin/activate 方法将这个路径加到全局环境变量最前面,这样就会优先调用该路径下的 python、python3、python3.6 可执行文件了。
这时候我们会发现命令行的样子就变了,前面多了一个 (PipenvTest-VSTVh89E) 的标识,代表当前我们已经切换到了虚拟环境下。
这时我们用 which 或 where 命令查看一下 Python 可执行文件的路径,命令如下:
如果有这样的输出结果就代表成功安装了 Django,可以看到此时安装的 Django 版本为 2.0,代表我们的虚拟环境成功安装了 Django 2.0 版本。
同时我们还注意到它输出了一句话叫做 Updated Pipfile.lock,这时我们可以发现项目路径下又生成了一个 Pipfile.lock 文件,内容如下:
可以看到里面标识了 Python 环境基本信息,以及依赖包的版本及 hashes 值。
另外我们还可以注意到 Pipfile 文件内容也有更新,[packages] 部分多了一句 django = “*”,标识了本项目依赖于 Django,这个其实类似于 requirements.txt 文件。
那么到这里有小伙伴可能就会问了, Pipfile 和 Pipfile.lock 有什么用呢?
好,接下来我们再回归正题,现在已经安装好了 Django 了,那么我们重新运行此脚本便可以成功输出 Django 版本信息了:
1
(PipenvTest-VSTVh89E) CQC-MAC% python3 main.py
结果如下:
1
2.0.2
这样我们就成功安装了 Django 2.x 了,和系统的 Django 1.11 没有任何冲突。
在此模式的命令行下,我们就可以使用虚拟环境下的 Python 解释器,而且所安装的依赖包对外部系统没有任何影响,而且使用 Pipfile 和 Pipfile.lock 来管理项目的依赖更加方便和健壮。
样例输出如下:
1
/Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/python
加载系统 Python 包
默认情况下,新创建的虚拟环境是不包含任何第三方包的,但我们也可以开启加载系统 Python 包功能,使用 –site-packages 即可:
1
pipenv --site-packages
这样创建的虚拟环境便可以使用系统已安装的 Python 包了。
开启虚拟环境
要开启虚拟环境只需要执行如下命令:
1
pipenv shell
这样就可以进入虚拟环境,此时运行的 python、python3 命令都是虚拟环境下的。
安装 Python 包
安装 Python 包我们不再需要 pip 来安装,直接使用 Pipenv 也可安装,如安装 requests,命令如下:
1
pipenv install requests
安装完成之后会同时更新项目目录下的 Pipfile 和 Pipfile.lock 文件。
有时候一些 Python 包是仅仅开发环境需要的,如 pytest,这时候我们通过添加 –dev 参数即可,命令如下:
pipenv install pytest --dev
这时候,pytest 的依赖便会记录在 Pipfile 的 [dev-packages] 区域:
[dev-packages]
pytest = "*"
获取包依赖
我们可以使用命令来清晰地呈现出当前安装的 Python 包版本及之间的依赖关系,命令如下:
pipenv graph
样例结果如下:
Django==2.0.2
- pytz [required: Any, installed: 2018.3]
pytest==3.4.1
- attrs [required: >=17.2.0, installed: 17.4.0]
- pluggy [required: <0.7,>=0.5, installed: 0.6.0]
- py [required: >=1.5.0, installed: 1.5.2]
- setuptools [required: Any, installed: 38.5.1]
- six [required: >=1.10.0, installed: 1.11.0]
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2018.1.18]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: <2.7,>=2.5, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
可以看到结果非常清晰,Django 当前安装了 2.0.2版本,依赖于 pytz 任何版本,已经安装了 2018.3 版本;pytest 已经安装了 3.4.1 版本,依赖 attrs>=17.2.0 版本,已经安装了 17.4.0 版本,另外还依赖 pluggy、py、setuptools、six 这些库。总之包的依赖关系一目了然。
卸载 Python 包
卸载 Python 包也非常简单,如卸载 requests 包,命令如下:
pipenv uninstall requests
卸载完成之后,Pipfile 和 Pipfile.lock 文件同样会更新。
如果要卸载全部 Python 包,可以添加 –all 参数:
pipenv uninstall --all
产生 Pipfile.lock
有时候可能 Pipfile.lock 文件不存在或被删除了,这时候我们可以使用如下命令生成:
pipenv lock
以上便是一些常用的 Pipenv 命令,如果要查看更多用法可以参考其官方文档:https://docs.pipenv.org/#pipenv-usage。
结语
本文介绍了 Pipenv 的基本用法,作为 pip 和 virtualenv 的结合体,我们可以利用它更方便地创建和管理 Python 虚拟环境,还可以用更加科学的方式管理 Python 包,一举两得。
嗯,是时候抛弃 virtualenv 和 pip 了!
转载请注明:静觅 » Requests库作者另一神器Pipenv的用法
上一篇: 实例讲解PHP面向对象之多态