如果与他人共享 Python 项目,或使用生成系统生成 Python 应用程序,则需要指定任何必需的外部包。 计划将项目复制到需要还原环境的其他位置时,还需要定义所需的依赖包。
指定外部依赖 Python 包的建议方法是使用 要求文件 (readthedocs.org)。 此文件包含 pip 命令列表,这些命令为项目安装任何所需版本的依赖包。 最常见的命令是 pip freeze > requirements.txt。 此命令将环境的当前包列表记录到 requirements.txt 文件中。
要求文件包含所有已安装包的精确版本。 可以使用要求文件来冻结环境的要求。 通过使用精确的包版本,可以轻松地在另一台计算机上重现环境。 要求文件包括包,即使它们随版本范围一起安装,作为另一个包的依赖项,或者与 pip 以外的安装程序一起安装。
先决条件
安装了支持 Python 工作负载的 Visual Studio。 有关详细信息,请参阅 在 Visual Studio中安装 Python 支持。
需求文件。 可以使用现有要求文件或 生成文件 ,如本文所述。
从技术上看,任何文件名都可用于跟踪要求。 但是,Visual Studio 为名为“requirements.txt”的需求文件提供特定支持。当安装包时,可以使用参数 -r <full path to file> 来指定文件的首选名称。
安装 requirements.txt 中列出的依赖项
如果加载具有 requirements.txt 文件的项目,则可以安装文件中列出的所有包依赖项。
在 解决方案资源管理器中,展开项目,然后展开 Python 环境 节点。
找到要为其安装包的环境节点。 右键单击节点,然后 从 requirements.txt中选择“安装”。
可以在 “输出 ”窗口中监视包安装过程:
输出列出了已安装的任何必需包,以及受影响的 pip 命令所需的任何更新以及更新的 pip 版本的可用性。
在虚拟环境中安装依赖项
还可以在现有虚拟环境中安装 Python 包依赖项。
在 解决方案资源管理器中,展开项目,然后展开 Python 环境 节点。
找到要为其安装包的虚拟环境节点。 右键单击节点,然后 从 requirements.txt中选择“安装”。
如果需要创建虚拟环境,请参阅 “使用虚拟环境”。
生成 requirements.txt 文件
如果项目中已安装所有必需的 Python 包,则可以在 Visual Studio 中生成 requirements.txt 该文件。
在 解决方案资源管理器中,展开项目,然后展开 Python 环境 节点。
找到要为其生成要求文件的环境节点。 右键单击节点,然后选择“ 生成 requirements.txt”。
刷新或向现有 requirements.txt 文件添加条目
requirements.txt如果文件已存在,Visual Studio 将显示一个提示,其中包含多个选项:
-
替换整个文件:覆盖
requirements.text文件中定义的所有项、注释和选项。 -
刷新现有条目:更新文件中的版本说明符
requirements.text以匹配当前安装的版本。 -
更新和添加条目:刷新文件中的现有要求
requirements.text,并将所有新的包要求追加到文件末尾。
Visual Studio 运行 pip 以检测环境的当前包要求,然后根据所选内容更新 requirements.txt 文件。
手动安装包依赖项
如果 pip 未安装文件中定义的 requirements.txt 包依赖项,则整个安装将失败。
有两个选项可以解决此问题:
手动编辑
requirements.txt文件以排除失败的包,然后重新运行安装过程。使用 pip 命令选项 引用包的可安装版本。
使用 pip wheel 更新要求文件
如果使用 pip wheel 命令编译依赖项,则可以将 --find-links <path> 选项添加到 requirements.txt 文件。
pip wheel调用命令以编译所需依赖项的列表:pip wheel azure输出显示为收集的包生成的轮子:
Downloading/unpacking azure Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure Building wheels for collected packages: azure Running setup.py bdist_wheel for azure Destination directory: c:\project\wheelhouse Successfully built azure Cleaning up...将
find-links和no-index选项以及包版本要求追加到requirements.txt文件中:type requirements.txt --find-links wheelhouse --no-index azure==0.8.0使用更新的要求文件运行 pip 安装过程:
pip install -r requirements.txt -v输出跟踪安装过程的进度:
Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3)) Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl Installing collected packages: azure Successfully installed azure Cleaning up... Removing temporary dir C:\Project\env\build...