我有setup.py
的Python包。它具有在install_requires
中声明的常规依赖项和在tests_require
中声明的开发依赖项,例如flake8
。
我认为pip install -e .
或正在运行python setup.py test
也会安装我的开发依赖项,它们将可用。然而,显然他们不是,我很难设置我的Travis CI构建权。
install:
- "pip install -e ."
script:
- "python setup.py test"
- "flake8"
如上配置的构建将失败,因为flake8
将不会被发现为有效命令。我还尝试从flake8
命令(通过python setup.py test
)内部调用subprocess
,但也没有成功。
另外,我讨厌flake8
不能轻易成为python setup.py test
命令的组成部分的事实,但这是另一个故事。
答案 0 :(得分:12)
我更喜欢将大部分配置保留在tox.ini
中,并依赖它来安装和运行要运行的内容。对于测试,我使用pytest
(可以修改解决方案以轻松使用其他测试框架)。
使用以下文件:
tox.ini
:自动化测试.travis.yml
:Travis的说明setup.py
:用于安装测试包的安装脚本test_requirements.txt
:测试要求列表tox.ini
[tox]
envlist = py{26,27,33,34}
[testenv]
commands =
py.test -sv tests []
deps =
-rtest-requirements.txt
.travis.yml
sudo: false
language: python
python:
- 2.6
- 2.7
- 3.3
- 3.4
install:
- pip install tox-travis
script:
- tox
test_requirements.txt
只是普通的需求文件,其中包含您需要的内容(例如flake8
,pytest
和其他依赖项)
您可以在https://github.com/vlcinsky/awslogs/tree/pbr-setup.py
看到示例它在pbr
,coverage
和coverall
使用的事实与我的回答无关(无论是否有效)都可以使用。
答案 1 :(得分:1)
更直接的答案是pip install
不会安装tests_require
,故意将运行时要求与测试要求分开。 python setup.py test
创建了一个类似virtualenv的环境来运行测试,之后不再执行此操作。 flake8
一旦完成就无法使用。
如果你使用它,Flake8有setuptools integration和integrates with pytest。 pytest本身also integrates with setuptools。