如何在不安装“ extras_require”依赖项的情况下运行“ python setup.py test”?

时间:2019-02-21 02:32:55

标签: python unit-testing tensorflow setuptools

我在extras_require中有setup.cfg个依赖项,列为:

[extras_require]
tensorflow = tensorflow
tensorflow_gpu = tensorflow-gpu

这样,如果我的软件包是与pip install pkg[tensorflow_gpu]一起安装的,它将安装该软件包的一个版本,而pip install pkg[tensorflow]将安装另一个版本。

这类似于Edward Package软件包的包装方式(此git issue之后)。

但是,当我运行python setup.py test时,它将在执行单元测试之前同时安装 tensorflowtensorflow-gpu软件包。一旦我在任何单元测试中import tensorflow,并且与硬件有关,这就会成为问题。

在运行extras_require时是否可以有选择地安装某个python setup.py test软件包?

或者是否可以安装 extras_require软件包?因为这样我可以在运行测试命令之前安装tensorflow

(注意:我了解我可以独立运行pip和pytest,但我正在寻找使用setuptools的解决方案)

1 个答案:

答案 0 :(得分:0)

看来这不是setuptools的问题,而是我正在使用的名为pyscaffold的工具的潜在问题。我在他们的github上打开了question issue

当我使用以下python setup.py test运行setup.cfg时,它可以正常工作,因为它不会拉入tensorflow。

[metadata]
name = simple

[options]
package_dir = 
    =src
setup_requires = pytest-runner
install_requires = 
tests_require = pytest

[options.extras_require]
tf = tensorflow

[aliases]
test = pytest

[tool:pytest]
addopts = --verbose
testpaths = tests