2016-01-27 58 views
5

我的Python包setup.py。它在聲明install_requires經常依賴和發展依賴於tests_require聲明,例如flake8如何讓Travis CI安裝tests_require中聲明的Python依賴關係?

我以爲pip install -e .或運行python setup.py test也將安裝我的開發依賴關係,他們將可用。然而,顯然他們不是,我很難設置我的Travis CI版本。

install: 
    - "pip install -e ." 
script: 
    - "python setup.py test" 
    - "flake8" 

生成如上述將失敗配置,因爲flake8不會被發現爲有效的命令。我也試圖(通過subprocess)從python setup.py test命令內部調用flake8,也沒有成功。

而且我討厭的事實,flake8不能輕易作出python setup.py test命令的組成部分,但這是另一個故事。

回答

10

我寧願保持最tox.ini的配置,並依靠它來安裝和運行的是要運行。對於測試,我使用pytest(可以修改解決方案以輕鬆使用其他測試框架)。

下列文件用於:

  • tox.ini:自動測試
  • .travis.yml:特拉維斯 -
  • 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

只是普通的需求文件蒙山你在那裏需要什麼都(例如flake8pytest和其他依賴)

你可以在https://github.com/vlcinsky/awslogs/tree/pbr-setup.py

它使用有pbrcoveragecoverall事實看樣是不相關的我的回答(它的作品有或沒有PBR)。

+0

這可能是迄今爲止最好的解決方案。 FWIW,我在野外也看到的是在setup.py中使用'extras_require'和'pip install -e。[tests]'。將它保持DRY並將測試需求定義爲分配給'extras_require ['tests']'和tests_require'的單獨列表也很容易。 (請參閱我的圖書館https://github.com/honzajavorek/fiobank/) –