【问题标题】:should pytest et al. go in tests_require[] or extras_require{testing[]}?应该 pytest 等人。进入 tests_require[] 或 extras_require{testing[]}?
【发布时间】:2014-11-21 18:29:32
【问题描述】:

我正在编写一个使用 py.test 进行测试的 python 程序,现在一个测试也依赖于 numpy。我应该在 setup.py 的哪个位置添加这些依赖项?

目前我的 setup.py 的相关部分如下所示:

[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['pytest'],
'cmdclass': {'test': PyTest},
'extras_require': {
    'testing': ['pytest'],
},
[...]

pytest 两次感觉已经有些奇怪了,我不知道在哪里添加 numpy。

【问题讨论】:

    标签: python setuptools setup.py


    【解决方案1】:

    根据文档

    tests_require是使用setuptools's test命令时获得的附加包。它们未安装在系统上。

    extras_require 是按功能名称分组的可选附加包。安装软件包列表以使用该功能,并且有多种安装方法。见Does pip handle extras_requires from setuptools/distribute based sources?

    我的解释

    tests_require 应该是用于测试的包,例如numpy,而不是用于进行测试的包,例如pytestnose。在 setuptools 之外进行测试时,tests_require 需要移动或复制到 extras_require 中的“测试”功能。

    使用 extras_require 使 pytest 等测试包成为可选。使用 setup_requires 来要求它。

    pytestnose 可以与 setuptools 集成以利用 tests_require 的便利性,但是,可能有缺点。 nose 警告通过 setuptools 运行时插件可能不可用。

    Integrating with setuptools / python setup.py test / pytest-runnernosetests setuptools command

    例如

    使用 setuptools 集成进行测试:

    setup.py

    [...]
    'version': '0.0.1',
    'install_requires': [],
    'tests_require': ['numpy'],
    'cmdclass': {'test': PyTest},
    'extras_require': {
        'testing': ['pytest'],
    },
    [...]
    

    (env) > python setup.py develop
    (env) > easy_install pytest
    (env) > python setup.py test -a "--pdb"
    

    或者,在没有 setuptools 集成的情况下进行测试:

    setup.py

    [...]
    'version': '0.0.1',
    'install_requires': [],
    'extras_require': {
        'testing': ['pytest', 'numpy'],
    },
    [...]
    

    (env) > pip install -e .[testing]
    (env) > pytest.py --pdb
    

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 2018-09-24
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-05-12
      • 1970-01-01
      相关资源
      最近更新 更多