【发布时间】:2017-10-30 07:07:01
【问题描述】:
我想使用setuptools 编写一个setup.py 文件。我的包依赖于tensorflow,但是有两个不同的pip包可以满足要求,tensorflow和tensorflow-gpu。如果我只是将tensorflow 放在我的setup(..., install_requires=["tensorflow"]) 中,那么如果用户在他们的系统上安装了tensorflow-gpu pip 包,则安装将失败。
imp 模块不能用于检查(如在此答案中:How to check if a python module exists without importing it),因为模块的 import 名称是 tensorflow,无论是哪个 pip 包 用户安装。那么 setuptools(以及 distutils)如何检测安装了哪个 pip 包呢?我已经挖掘了一点源,但找不到它检查的地方。
*注意,我也不打算让 setuptools 接受。我只想知道它使用什么方法来检测包,所以我可以在我的setup.py 中使用相同的方法来手动将 install_requires 参数设置为正确的版本。 (即像这样:Alternative dependencies (fall back) in setup.py)
【问题讨论】:
标签: python python-2.7 tensorflow setuptools distutils