Python 安装配置 install_requires "good practices"
Python setup config install_requires "good practices"
我在这里的问题可能看起来很幼稚,但我从未在网络资源上找到任何关于它的线索。
问题是,关于 setup()
函数或 setup.cfg
文件的 install_requires
参数,提及 每个 使用的包,甚至 python 内置包,例如 os
?
可以假设任何 python 环境都有这些通用包,那么在设置中明确提及它们是否有问题,使其可能过于冗长?
谢谢
install_requires
应包括非标准库要求及其版本限制(根据需要)。
例如,这将为 numpy
和 scipy
声明最小版本,但允许 scikit-learn
:
的任何版本
setup(
# ...
install_requires=["numpy>=1.13.3", "scipy>=0.19.1", "scikit-learn"]
)
os
、sys
等软件包是 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 方依赖项,即项目包含:
- 您的代码导入的包和模块;
- 您的代码直接调用的二进制文件(例如在子进程中)。
不要列出你的依赖关系。
我在这里的问题可能看起来很幼稚,但我从未在网络资源上找到任何关于它的线索。
问题是,关于 setup()
函数或 setup.cfg
文件的 install_requires
参数,提及 每个 使用的包,甚至 python 内置包,例如 os
?
可以假设任何 python 环境都有这些通用包,那么在设置中明确提及它们是否有问题,使其可能过于冗长?
谢谢
install_requires
应包括非标准库要求及其版本限制(根据需要)。
例如,这将为 numpy
和 scipy
声明最小版本,但允许 scikit-learn
:
setup(
# ...
install_requires=["numpy>=1.13.3", "scipy>=0.19.1", "scikit-learn"]
)
os
、sys
等软件包是 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 方依赖项,即项目包含:
- 您的代码导入的包和模块;
- 您的代码直接调用的二进制文件(例如在子进程中)。
不要列出你的依赖关系。