Python 安装配置 install_requires "good practices"

Python setup config install_requires "good practices"

我在这里的问题可能看起来很幼稚,但我从未在网络资源上找到任何关于它的线索。

问题是,关于 setup() 函数或 setup.cfg 文件的 install_requires 参数,提及 每个 使用的包,甚至 python 内置包,例如 os ?

可以假设任何 python 环境都有这些通用包,那么在设置中明确提及它们是否有问题,使其可能过于冗长?

谢谢

install_requires 应包括非标准库要求及其版本限制(根据需要)。

例如,这将为 numpyscipy 声明最小版本,但允许 scikit-learn:

的任何版本
setup(
  # ...
  install_requires=["numpy>=1.13.3", "scipy>=0.19.1", "scikit-learn"]
)

ossys 等软件包是 Python 标准库的一部分,因此不应包括在内。

如@sinoroc 所述,此处仅应声明 direct 第三方依赖项。 您的依赖项的依赖项 是自动处理的。 (例如scikit-learn依赖于joblib;当需要前者时,会安装后者)。


我发现阅读其他包并查看它们的 setup.py 文件是如何定义的很有帮助。

install_requires 应仅提及未随标准库预先打包的包。

如果您担心某些软件包可能由于 Python 版本控制而无法包含在内,您可以指定您的软件包需要大于或等于 X 的 python 版本。

注意:打包 python 包是出了名的毛茸茸的事情。

我建议你看看pyproject.toml, these can be pip installed like any normal package and are used by some of the more modern tools like poetry

您应该列出 顶级第 3 方依赖项

  • 不要列出 Python 标准库中的包和模块。

  • 请列出您的代码直接依赖的第 3 方依赖项,即项目包含:

    • 您的代码导入的包和模块;
    • 您的代码直接调用的二进制文件(例如在子进程中)。
  • 不要列出你的依赖关系。