Python安装配置安装需要“良好实践”

2024-06-28 19:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题是,关于setup()函数或setup.cfg文件的install_requires参数,提到所使用的每个包,即使是python内置包,例如os,是否是一种好的做法?

我们可以假设任何python环境都有这些通用包,因此在设置中显式地提到它们是否会有问题,从而可能导致过于冗长

谢谢


Tags: install文件函数参数环境ossetupcfg
3条回答

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

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

  • 请列出您的代码直接依赖的第三方依赖项,即包含以下内容的项目:

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

install_requires应包括非标准库要求以及对其版本的约束(根据需要)

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

setup(
  # ...
  install_requires=["numpy>=1.13.3", "scipy>=0.19.1", "scikit-learn"]
)

诸如ossys之类的包是Python标准库的一部分,因此不应包括在内

正如@sinoroc所提到的,这里只应声明直接的第三方依赖关系<依赖项的em>依赖项将自动处理。(例如,scikit-learn取决于joblib;当需要前者时,将安装后者)


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

install_requires应该只提到那些没有随标准库预先打包的包

如果您担心由于Python版本控制而无法包含某些包,则可以指定您的包需要大于或等于X的Python版本

注意:打包python包是出了名的麻烦事

我建议您查看一下pyproject.toml,它们可以像任何普通软件包一样通过pip安装,并被一些更现代的工具(如poetry)使用

相关问题 更多 >