微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何指定对Python包的外部系统依赖关系?

如何解决如何指定对Python包的外部系统依赖关系?

编写Python软件包时,由于setup.py中的字段install_requires,我知道如何在setuptools.setup文件中指定其他必需的Python软件包。

但是,我不知道如何指定不是Python软件包的外部系统依赖项,即,我的软件包中的诸如gitcmake之类的命令(示例)可以通过subprocess.callsubprocess.Popen打电话吗?

我是否必须手动检查setup.py文件中命令的可用性,还是有一种精美的方法来指定系统要求?

编辑:我只是想检查一下外部工具是否可用,如果没有,请用户(自行安装)。安装软件包时,我不想管理外部工具的安装。

文稿摘要setuptools似乎对此不支持,并且在运行时进行检查会更加安全(参见注释和答案)。

解决方法

我的建议是检查这些外部依赖项的存在,而不是在安装时而是在运行时。要么在每次运行的开始,要么在第一次运行。

确实可以将其添加到setup.py中,但是setup.py并不总是在安装时执行:例如,如果您的项目打包为 wheel 则它甚至根本不包含setup.py文件。而且即使您没有将项目作为轮子分发,如果我没有记错的话,pip还是会在本地构建轮子并将其重新用于后续安装。

因此,尽管可以在安装时作为安装脚本的一部分进行此类检查(前提是您可以保证setup.py的存在和执行),但我想说运行时是更安全的选择

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。