管理应用程序依赖项#
包安装教程介绍了安装和更新 Python 包的基本知识。
但是,即使对于您自己的个人项目,交互式运行这些命令也会变得很乏味,而对于项目有多个贡献者时,尝试自动设置开发环境会变得更加困难。
本教程将指导您使用 Pipenv 管理应用程序的依赖项。它将向您展示如何安装和使用必要的工具,并对最佳实践提出有力的建议。
请记住,Python 用于许多不同的目的,而您希望如何管理依赖项可能会根据您决定发布软件的方式而改变。此处提供的指导最直接适用于网络服务(包括 Web 应用程序)的开发和部署,但也非常适合管理任何类型的项目的开发和测试环境。
有关替代方案,请参见 用于应用程序依赖项管理的其他工具。
安装 Pipenv#
Pipenv 是 Python 项目的依赖项管理器。如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它的精神与这些工具类似。虽然 pip 对于个人使用通常就足够了,但对于协作项目,我们推荐使用 Pipenv,因为它是一种更高级别的工具,可以简化对常见用例的依赖项管理。
使用 pip
安装 Pipenv
python3 -m pip install --user pipenv
py -m pip install --user pipenv
为您的项目安装包#
Pipenv 在每个项目的基础上管理依赖项。要安装包,请切换到您的项目目录(或仅针对本教程的空目录),然后运行
cd myproject
pipenv install requests
Pipenv 将安装 Requests 库,并在项目的目录中为您创建一个 Pipfile
。 Pipfile 用于跟踪项目所需的依赖项,以防您需要重新安装它们,例如当您与他人分享项目时。您应该获得类似于此的输出(尽管显示的确切路径会有所不同)
Creating a Pipfile for this project...
Creating a virtualenv for this project...
Using base prefix '/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6'
New python executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python3.6
Also creating executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python
Installing setuptools, pip, wheel...done.
Virtualenv location: ~/.local/share/virtualenvs/tmp-agwWamBd
Installing requests...
Collecting requests
Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
Using cached idna-2.6-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, chardet, certifi, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22
Adding requests to Pipfile's [packages]...
使用已安装的包#
现在 Requests 已安装,您可以创建一个简单的 main.py
文件来使用它
import requests
response = requests.get('https://httpbin.org/ip')
print('Your IP is {0}'.format(response.json()['origin']))
然后,您可以使用 pipenv run
运行此脚本
pipenv run python main.py
您应该获得类似于此的输出
Your IP is 8.8.8.8
使用 pipenv run
确保已安装的包可供您的脚本使用。还可以生成一个新 shell,确保所有命令都可以使用 pipenv shell
访问已安装的包。
下一步#
恭喜,您现在知道如何在协作 Python 项目中有效管理依赖项和开发环境! ✨ 🍰 ✨
如果您有兴趣创建和分发自己的 Python 包,请参阅 关于打包和分发包的教程。
请注意,当您的应用程序包含 Python 源包的定义时,它们(及其依赖项)可以通过 pipenv install -e <relative-path-to-source-directory>
(例如 pipenv install -e .
或 pipenv install -e src
)添加到您的 pipenv
环境中。
用于应用程序依赖项管理的其他工具#
如果您发现这种管理应用程序依赖项的方法不适合您或您的用例,您可能需要按字母顺序浏览这些其他工具和技术,看看其中是否有更适合您的
hatch 用于对项目管理工作流中的更多步骤进行固执的覆盖,例如增加版本和从项目模板创建新的框架项目。
micropipenv 用于 pip 的轻量级包装器,支持
requirements.txt
、Pipenv 和 Poetry 锁定文件,或将它们转换为与 pip-tools 兼容的输出。专为容器化 Python 应用程序设计,但不仅限于此。pip-tools 用于从直接用于项目中的包列表创建所有依赖项的锁定文件,并确保只安装这些依赖项。
Poetry 用于与 Pipenv 范围相当的工具,更直接地关注将被管理的项目构建为具有有效
pyproject.toml
文件的可分发 Python 包的用例。相比之下,Pipenv 明确避免假设正在处理的应用程序将支持作为pip
可安装 Python 包进行分发。