python - 如何指定 Python 包的外部系统依赖项?

标签 python python-3.x setuptools setup.py python-packaging

在编写 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/

相关文章:

python - 无法使用kafka-python从另一个容器向Kafka容器发出请求

python - 如何使用 selenium + chrome webdriver + python 忽略警报?

python - Pandas :更改列数据类型会产生警告

python - 如何在python中生成具有两个节点之间的长最短路径的有向无环图

Python字典没有按顺序排列

python - Tox 在安装模块时无法复制非 python 文件

Python setuptools' "setup.py install"不会自动调用构建?

python - SQLAlchemy:检查对象是否已存在于表中

python-3.x - 如何在seaborn factorplot中将标题加粗

python - 使 pip install .[option] 安装比默认 pip install 更少的软件包。 (所谓的负额外要求)