在尝试使用 Tox 更好地简化跨多个环境的测试时,我在测试 Python 3.4 时遇到了以下错误:
ImportError: No module named 'debug_toolbar'
但是,在我的文件django-debug-toolbar==1.3.0
中列出,我的文件如下所示:requirements.txt
tox.ini
[tox]
envlist = py27,py34
skipsdist = True
[testenv]
deps = -r{toxinidir}/requirements.txt
setenv =
PYTHONPATH = {toxinidir}:{toxinidir}
commands = python manage.py test
似乎它没有正确安装要求。奇怪的是,py27 环境不会抛出这个错误,并且能够很好地执行测试。
这可能是什么原因造成的?
编辑:供参考,这是我当前的设置。当我第一次运行 tox(即没有 .tox)时,它运行良好,但之后的任何时候它都会失败。该.tox
目录似乎确实建立了正确的;所有依赖项都安装在.tox/py34/lib/python3.4/site-packages
. 与之前相比,我现在还卸载了django
,这确实是现在第一个失败的依赖项。
(venv)joost@thorin:myproject/ (master✗) % rm -rf .tox
(venv)joost@thorin:myproject/ (master✗) % cat tox.ini
[tox]
envlist = py27,py34
skipsdist = True
[testenv]
deps = -r{toxinidir}/requirements.txt
commands = python manage.py test
(venv)joost@thorin:myproject/ (master✗) % tox
py27 create: /Users/Joost/myproject/.tox/py27
py27 installdeps: -r/Users/Joost/myproject/requirements.txt
py27 runtests: PYTHONHASHSEED='4248725049'
py27 runtests: commands[0] | python manage.py test
Creating test database for alias 'default'...
................
----------------------------------------------------------------------
Ran 16 tests in 0.093s
OK
Destroying test database for alias 'default'...
py34 create: /Users/Joost/myproject/.tox/py34
py34 installdeps: -r/Users/Joost/myproject/requirements.txt
py34 runtests: PYTHONHASHSEED='4248725049'
py34 runtests: commands[0] | python manage.py test
Creating test database for alias 'default'...
................
----------------------------------------------------------------------
Ran 16 tests in 0.093s
OK
Destroying test database for alias 'default'...
____________________________________________________________________ summary _____________________________________________________________________
py27: commands succeeded
py34: commands succeeded
congratulations :)
(venv)joost@thorin:myproject/ (master✗) % tox
py27 runtests: PYTHONHASHSEED='3259360769'
py27 runtests: commands[0] | python manage.py test
Creating test database for alias 'default'...
................
----------------------------------------------------------------------
Ran 16 tests in 0.088s
OK
Destroying test database for alias 'default'...
py34 runtests: PYTHONHASHSEED='3259360769'
py34 runtests: commands[0] | python manage.py test
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named 'django'
ERROR: InvocationError: '/Users/Joost/myproject/.tox/py34/bin/python manage.py test'
____________________________________________________________________ summary _____________________________________________________________________
py27: commands succeeded
ERROR: py34: commands failed
(venv)joost@thorin:myproject/ (master✗) %