gpt4 book ai didi

python - pip 升级到 pip 10.x.x 后解析需求文件的正确方法?

转载 作者:太空狗 更新时间:2023-10-29 21:59:10 25 4
gpt4 key购买 nike

所以今天我确实发现随着 pip 10.x.x 的发布,req 包改变了它的目录,现在可以在 pip._internal 下找到.req.

由于通常的做法是在 setup.py 中使用 parse_requirements 函数来安装需求文件中的所有依赖项,我现在想知道这种做法是否应该改变因为它现在位于 _internal 之下?

或者不使用 parse_requirements 的最佳实践是什么?

最佳答案

首先,我认为从 setup.py 中解析 requirements.txt 不是一个好主意。应该反过来,setup.pysetup.cfg 中的 install_requires 应该被视为某种真实来源,并且应该从那里生成诸如 requirements.txt 之类的文件。但是每个人都有不同的需求,这会导致不同的工作流程。

所以说...

无需pipsetuptools 项目已在其顶级pkg_resources 中包含必要的工具。

它或多或少看起来像这样:

#!/usr/bin/env python

import pathlib

import pkg_resources
import setuptools

with pathlib.Path('requirements.txt').open() as requirements_txt:
install_requires = [
str(requirement)
for requirement
in pkg_resources.parse_requirements(requirements_txt)
]

setuptools.setup(
install_requires=install_requires,
)

同样,这仅适用于简单的 requirements.txt 文件。参见 Requirements parsing in the documentation page for pkg_resources获取有关处理内容的详细信息。简而言之,每一行都应该是有效的 PEP 508 requirement . Notations that are really specific to pip不支持,会导致失败。


注意事项

如前所述,不推荐这样做。 requirements.txt 文件和“安装依赖项”列表是两个不同的概念,它们不能互换。

但是,如果您坚持要编写读取 requirements.txt 文件的 setup.py 安装脚本,那么请确保此 requirements.txt 文件包含在“源分发”(sdist) 中,否则安装将失败,原因很明显。


从 setuptools 版本 62.6 开始,可以在 setup.cfg 中编写如下内容:

[options]
install_requires = file: requirements.txt

或者在 pyproject.toml 中:

[project]
dynamic = ["dependencies"]

[tool.setuptools.dynamic]
dependencies = requirements.txt

与上述警告相同:

  • 只支持非常简单的文件
  • 文件必须添加到sdist

此外,它目前被视为“测试版”功能。


注意事项:

关于python - pip 升级到 pip 10.x.x 后解析需求文件的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49689880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com