条件setup_require setup.py中的依赖项

时间:2017-05-08 00:00:19

标签: python pip setuptools

有什么方法可以告诉 pip 在不需要时跳过某些 setup_requires 依赖项吗?

在我的场景中,我在我的setup.py中将pytest-runner声明为设置依赖项(用于执行测试)。当我尝试安装我的软件包时(即:pip install my-package.tar.gz),它会下载pytest-runner,否则它将无法使用(*)。

在setup.py中我有:

...
setup_requires=['pytest-runner', 'flake8']
...

我想告诉setup.py只在执行测试时才使用pytest-runner。这可能吗?

正如@deceze建议的那样,这个声明将起作用:

setup_requires=['pytest-runner', 'flake8'] if 'test' in sys.argv else []

但我不想为setup.py添加逻辑。

(*)环境非常有限,这就是为什么下载依赖项是一个障碍。

1 个答案:

答案 0 :(得分:1)

rwt(Run With This)似乎是首选方法。

它提供按需依赖性解析,使得包在解释器会话期间可用。 其目标场景之一是:测试跑步者

安装rwt(*)后,可以从pytest-runner模块执行加载setup.py命令:

rwt pytest-runner -- setup.py test

python -m rwt pytest-runner -- setup.py test

(*)您仍然必须安装不需要的依赖项(即:rwt),但它似乎比安装其他依赖项的影响小。