管理应用程序依赖项¶
包安装教程介绍了安装和更新 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 可确保您的脚本可以使用已安装的包。也可以使用 pipenv shell 生成一个新的 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 包进行分发。uv 是一个单一工具,涵盖了整个项目管理工作流程,包括依赖项管理、打包和发布。