Pipenv-官方推荐的Python打包工具
之前我们发布了使用PIP管理Python软件包的教程。
在该教程中,我们讨论了如何安装pip,以及如何使用pip安装,更新和卸载Python软件包。
我们还讨论了虚拟环境的重要性以及如何使用venv和virtualvnv工具创建虚拟环境。
今天,我们将学习另一个名为pipenv的python软件包管理器。
它是Python.org推荐的新Python包装工具。
它可用于轻松安装和管理python依赖项,而无需创建虚拟环境。
Pipenv自动为项目创建和管理virtualenv。
当我们安装/卸载软件包时,它还会从Pipfile中添加/删除软件包。
为什么选择Pipenv?
Pipenv解决了以下实时问题:
- 我们不再需要创建虚拟环境。 Pipenv将自动为项目创建virtualenv。简单地说,pip和virtualenv可以一起使用。
- 管理requirements.txt文件可能会出现问题,因此Pipenv使用即将到来的Pipfile和Pipfile.lock代替,这对于基本用例而言是优越的。
- 它是安全的。哈希值随处可见。自动公开安全漏洞。
- 随时查看依赖关系图。
- 通过加载.env文件简化开发工作流程。
好吧,让我们开始吧。
安装Pipenv,官方推荐的Python打包工具
有许多安装Pipenv的方法。
我们将看到两种官方推荐的方法。
1.使用pip安装pipenv
官方推荐的方式是使用pip。
确保已安装python和pip。
如果没有,请参考本文第一段中链接的上一教程。
pip安装完成后,运行以下命令以安装pipenv。
$pip install --user pipenv
此命令将在用户级别(即非系统范围)安装pipenv。
如果在安装后shell中没有pipenv,则可能需要将用户库的二进制目录添加到PATH中。
如果我们不知道用户群是什么,请运行以下命令找出来:
$python -m site --user-base
我们将看到类似下面的输出。
/home/sk/.local
从上面的输出中可以看到,我的用户基本目录是/home/sk/.local,而我的基本二进制目录是/home/sk/.local/bin。
清除?
好的。
现在,将其添加到PATH中。
为此,请编辑~/.profile文件:
$vi ~/.profile
在末尾添加以下行:
export PATH="$HOME/.local/bin:$PATH"
按ESC键,然后键入:wq以保存并退出文件。
然后,运行以下命令以使更改生效。
$source ~/.profile
最后,运行以下命令:
$pipenv --update
要随时升级pipenv,请运行以下命令:
$pip install --user --upgrade pipenv
2.使用pipsi安装pipenv
Pipsi是一个功能强大的工具,可让我们将Python脚本安装到隔离的虚拟环境中。
要安装pipsi,请运行:
$curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
按照屏幕上的说明进行操作,我们必须更新PATH。
一旦安装了pipsi,请运行以下命令来安装pipenv:
$pipsi install pew $pipsi install pipenv
最后,运行以下命令:
$pipenv --update
要随时升级pipenv,只需运行:
$pipsi upgrade pipenv
使用Pipenv管理Python软件包
在shell程序中运行“ pipenv”以显示可用命令和常规选项的列表。
$pipenv
安装套件
创建一个新项目或者转到现有项目的目录。
$mkdir myproject $cd myproject
为项目安装软件包:
$pipenv install requests
当我们进入项目目录(在本例中为myproject)时,将看到两个文件,即Pipfile和Pipfile.lock。
Pipfile包含新安装的软件包的信息,例如名称,版本等。
我们可以使用此Pipfile跟踪要与其他人重新安装或者共享项目时项目需要哪些依赖项。
$cat Pipfile
并且,Pipfile.lock包含系统信息,已安装软件包的所有依赖关系(包括其版本)以及所有已安装软件包及其依赖关系的所有哈希。
$cat Pipfile.lock
现在安装另一个软件包,并再次检查两个文件的内容。
我们会注意到,Pidfile现在包含两个软件包。
并且,Pidfile.lock包含已安装软件包的所有依赖关系,包括它们的版本,以及所有已安装软件包的所有哈希及其依赖关系。
简而言之,每次安装新软件包时,这两个文件都会自动更新。
你注意到了吗?
我还没有创建任何虚拟环境。
Pipenv为我的项目自动创建了虚拟环境。
想知道项目存储其中?
只需运行此命令即可了解虚拟环境位置。
$pipenv --venv /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
要查看项目的家庭详细信息,请运行:
$pipenv --where /home/sk/myproject
正如我们在两个输出中一样,“/home/sk/myproject”是我的项目的主目录,而“ /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN”是我的虚拟环境。
我们可以“ ls”进入virtualenv以查看其中的内容。
$ls /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
更新包
要更新所有软件包,请运行:
$pipenv update
此命令将卸载所有软件包,然后将软件包重新安装到最新的兼容版本。
检查包装的完整性
我们是否担心已安装的软件包中是否存在任何安全漏洞?
没问题! Pipenv得到了支持。
要检查软件包的完整性,只需运行以下命令:
$pipenv check Checking PEP 508 requirements… Passed! Checking installed package safety… All good!
上面的命令检查安全漏洞并对照Pipfile中提供的PEP 508标记。
查看依赖图
让我们运行“ pipenv图”,看看会发生什么。
$pipenv graph
如我们所见,此命令显示依赖关系图。
卸载软件包
要删除软件包,请运行:
$pipenv uninstall requests Un-installing speedtest-cli… Uninstalling speedtest-cli-1.0.7: Successfully uninstalled speedtest-cli-1.0.7 Removing speedtest-cli from Pipfile… Locking [dev-packages] dependencies… Locking [packages] dependencies… Updated Pipfile.lock (c23e27)!
要卸载所有内容,请运行:
$pipenv uninstall --all Un-installing all packages from virtualenv… Found 1 installed package(s), purging… Environment now purged and fresh!
有关更多详细信息,请运行:
$pipenv -h
或者,
$pipenv --man
据我测试,Pipenv比pip更容易使用。
由于它是Python.org的官方推荐,因此我们现在可以在安装Python软件包时完全摆脱venv和virtualenv。