Car*_*eil 5 python distutils setuptools python-2.7 tensorflow
我想setup.py使用 写一个文件setuptools。我的包依赖于tensorflow,但是有两个不同的 pip 包可以满足要求,tensorflow和tensorflow-gpu。如果我只是输入tensorflowmy setup(..., install_requires=["tensorflow"]),那么如果用户tensorflow-gpu在其系统上安装了 pip 软件包,安装将会失败。
该imp模块不能用于检查(如本答案中:How to check if a python module isn’t importing it),因为模块的导入tensorflow名称与用户安装的pip 包无关。那么 setuptools(以及 distutils)如何检测安装了哪个 pip 包?我已经对源代码进行了一些挖掘,但找不到它检查的地方。
*注意,我不打算破解安装工具来接受其中任何一个。我只想知道它使用什么方法来检测包,因此我可以在 my 中使用相同的方法setup.py手动将 install_requires 参数设置为正确的版本。(即像这样:setup.py 中的替代依赖项(回退))
我最近回答过类似的问题。您需要区分一个 TF 和另一个 TF。我对 TF 的了解不够,无法帮助了解细节,但大部分代码应该是这样的:
\n\nkw = {}\ntry:\n import tensorflow\nexcept ImportError: # There is no one, declare dependency\n kw[\'install_requires\'] = [\'tensorflow\']\nelse:\n if is_gpu(tensorflow):\n kw[\'install_requires\'] = [\'tensorflow-gpu\']\n else:\n kw[\'install_requires\'] = [\'tensorflow\']\n\nsetup(\n \xe2\x80\xa6\n **kw\n)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |