以前我手动使用了一个看起来像这样的 Makefile:
.PHONY: all
all: tests
.PHONY: tests
tests: py_env
bash -c 'source py_env/bin/activate && py.test tests'
py_env: requirements_dev.txt setup.py
rm -rf py_env
virtualenv py_env
bash -c 'source py_env/bin/activate && pip install -r requirements_dev.txt'
这有一个很好的副作用,如果我更改 requirements_dev.txt 或 setup.py,它会重建我的 virtualenv。但是感觉有点笨重。
我想用tox
做类似的事情。我知道tox
有一个--recreate
选择,但我宁愿只在需要时才调用它。
我的新设置是这样的:
# Makefile
.PHONY: all
all: tests
.PHONY: tests
tests:
tox
和
# tox.ini
[tox]
project = my_project
envlist = py26,py27
[testenv]
install_command = pip install --use-wheel {opts} {packages}
deps = -rrequirements_dev.txt
commands =
py.test {posargs:tests}
理想的解决方案将只使用 in 中的内容tox
,但可接受的解决方案将涉及 Makefile 和--recreate
标志。