在编写 Python 包时,我知道如何在 setup.py
中指定其他所需的 Python 包。文件感谢领域install_requires
来自 setuptools.setup
.
但是,我不知道如何指定 外部系统依赖项 不是 Python 包,即诸如 git
之类的命令或 cmake
(示例)我的包可以通过 subprocess.call
调用或 subprocess.Popen
?
我是否必须手动检查 setup.py
中命令的可用性?文件,或者有没有一种奇特的方式来指定系统要求?
编辑:我只想能够检查外部工具是否可用,如果不邀请用户安装它们(由他们自己)。我不想在安装包时管理外部工具的安装。
投稿摘要:似乎setuptools
对此不提供支持,在运行时进行检查会更安全(参见评论和答案)。
最佳答案
我的建议是不要在安装时而是在运行时检查这些外部依赖项的存在。在每次运行开始时,或者在第一次运行时。
确实,您可以将此添加到您的 setup.py
,但 setup.py
并不总是在安装时执行:例如,如果您的项目打包为一个轮子,那么它甚至不包含 setup.py
文件。即使您没有将您的项目作为轮子分发,如果我没记错的话,pip 还是倾向于在本地构建一个轮子,并将其重用于后续安装。
因此,尽管可以在安装时将此类检查作为安装脚本的一部分进行(前提是您可以保证 setup.py
的存在和执行),但我会说运行时是一个更安全的选择。
关于python - 如何指定 Python 包的外部系统依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64005822/