如何使用setuptools按pip包名指定两个替代需求?

2024-10-02 08:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用setuptools写一个setup.py文件。我的包依赖于tensorflow,但是有两个不同的pip包满足需求,tensorflow和{}。如果我把tensorflow放在我的setup(..., install_requires=["tensorflow"])中,那么如果用户在他们的系统上安装了tensorflow-gpupip包,那么安装将失败。在

不能使用imp模块进行检查(在这个答案中:How to check if a python module exists without importing it),因为不管用户安装了哪个pip包,模块的导入名称都是tensorflow。那么setuptools(以及distutils)如何检测安装了哪个pip包呢?我已经查了一下资料来源,但找不到它检查的地方。在

*注意,我不打算接受黑客安装工具。我只想知道它使用什么方法来检测包,这样我就可以在我的setup.py中使用相同的方法手动将install\u requires参数设置为正确的版本。(例如:Alternative dependencies (fall back) in setup.py


Tags: 模块installpip文件方法答案用户py
1条回答
网友
1楼 · 发布于 2024-10-02 08:19:29

我最近有一个类似的问题。你需要区分这两个TF。我对TF的了解还不够详细,但大部分代码应该是这样的:

kw = {}
try:
    import tensorflow
except ImportError:  # There is no one, declare dependency
    kw['install_requires'] = ['tensorflow']
else:
    if is_gpu(tensorflow):
        kw['install_requires'] = ['tensorflow-gpu']
    else:
        kw['install_requires'] = ['tensorflow']

setup(
    …
    **kw
)

相关问题 更多 >

    热门问题