原文地址: https://www.ostechnix.com/pipenv-officially-recommended-python-packaging-tool/python
上次咱们发布了一篇[如何用 Pip 进行 Python 包管理](如何用 Pip 进行 Python 包管理 "如何用 Pip 进行 Python 包管理")的文章。在那篇文章里咱们讨论了如何安装 Pip,如何用 Pip 来安装、升级和删除 Python 包。咱们也讨论了虚拟环境的重要性以及用 venv 和 virtualenv 工具建立虚拟环境的方法。但用 venv 和 virtualenv 管理多个虚拟环境是项乏味并且繁琐的任务,幸亏咱们有另一个名为 Pipenv 的工具,它是 Python.org 官网最新推荐的包管理工具,它可以帮助咱们没必要创建虚拟环境的状况下很是容易地安装和管理依赖。Pipenv 能够为你的项目自动地建立和管理一个虚拟环境,当你安装 / 删除包文件时它能够添加 / 删除包名称到 Pipfile 文件。git
Pipenv 解决下列实际问题:github
好了,让咱们开始学习 pipenv 吧。shell
有不少方式来安装 pipenv,咱们看看推荐的两种:安全
官方推荐的安装方式是使用 pip。确认你已经装好了 Python 和 pip,若是没有,查看文章开头的那个连接。 若是 pip 已经安装好了,用下面的命令安装 pipenvbash
$ pip install --user pipenv
复制代码
这个命令在用户级别(非系统全局)下安装 pipenv。若是安装后 shell 提示找不到 pipenv 命令,你须要添加当前 Python 用户主目录的 bin 目录到 PATH 环境变量。若是你不知道 Python 用户主目录在哪里,用下面的命令来查看:curl
$ python -m site --user-base
复制代码
你会看到相似下面的输出工具
/home/sk/.local
复制代码
这就是个人 Python 主目录,那 bin 目录就是 /home/sk/.local/bin
,清楚了吧?好,运行下面的命令:学习
$ pipenv --update
复制代码
任什么时候候你均可以用下面的命令升级 pipenvui
$ pip install --user --upgrade pipenv
$ pipenv --update
复制代码
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
复制代码
在 shell 中执行 pipenv
命令可查看可用命令和通用选项
$ pipenv
复制代码
示例输出以下
新建一个项目目录或切换到已有项目目录
$ mkdir myproject
$ cd myproject
复制代码
为你的项目安装依赖包
$ pipenv install requests
复制代码
用 ls
命令查看当前项目目录,你会发现有两个文件:Pipfile 和 Pipfile.lock 。Pipfile 里有最新安装的包文件的信息,如名称、版本等。用来 在从新安装项目依赖或与他人共享项目时,你能够用 Pipfile 来跟踪项目依赖。
$ cat Pipfile
复制代码
Pipfile.lock 则包含你的系统信息,全部已安装包的依赖包及其版本信息,以及全部安装包及其依赖包的 Hash 校验信息。
$ cat Pipfile.lock
复制代码
如今安装另外一个包,再次查看这两个文件的内容。你会发现 Pipfile 如今包含两个安装包了,Pipfile.lock 也包含了全部已安装包的依赖包及其版本信息,以及全部安装包及其依赖包的 Hash 校验信息。每次你安装新的依赖包,这两个文件都会自动更新。
你注意到了吗?我并无建立一个虚拟环境。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
命令查看虚拟环境目录下的内容。
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 graph
看看会发生什么
$ 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 了。
今天的教程就到这里了,更多精彩文章,敬请期待。
资源:
我在 Mac 下使用时遇到些问题:
$ pipenv run python main.py复制代码