Tox 和 django_toolbar:ImportError
Tox and django_toolbar: ImportError
在尝试使用 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✗) %
File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
在我看来,您的 Django 并未安装在 virtualenv 中。如果是,它将指向 /Users/$USER/path/to/virtualenv/lib/python3.4/site-packages/django/etc/etc/etc
。您是否以某种方式设置了 tox 以使用本地安装的 Django 而不是安装在 virtualenv 内部的 Django?
最后通过升级tox
解决了这个问题。我还不确定这个问题是什么时候被修复的,或者它被列为什么错误,但是使用版本 2.1.1
我不会再收到这个错误了。
I now also uninstalled django, and indeed that is now the first dependency that fails.
似乎 tox
只创建了一次 virtualenv。如果它这样做了,你之后例如修改了 requirements.txt
文件,或者卸载了像 django
这样的库,你需要 re-create it:
To force tox to recreate a (particular) virtual environment:
tox --recreate -e py34 # [edited to py34]
would trigger a complete reinstallation of the
existing py27 environment (or create it afresh if it doesn’t exist).
的副本,已编辑以适合
在尝试使用 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✗) %
File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
在我看来,您的 Django 并未安装在 virtualenv 中。如果是,它将指向 /Users/$USER/path/to/virtualenv/lib/python3.4/site-packages/django/etc/etc/etc
。您是否以某种方式设置了 tox 以使用本地安装的 Django 而不是安装在 virtualenv 内部的 Django?
最后通过升级tox
解决了这个问题。我还不确定这个问题是什么时候被修复的,或者它被列为什么错误,但是使用版本 2.1.1
我不会再收到这个错误了。
I now also uninstalled django, and indeed that is now the first dependency that fails.
似乎 tox
只创建了一次 virtualenv。如果它这样做了,你之后例如修改了 requirements.txt
文件,或者卸载了像 django
这样的库,你需要 re-create it:
To force tox to recreate a (particular) virtual environment:
tox --recreate -e py34 # [edited to py34]
would trigger a complete reinstallation of the existing py27 environment (or create it afresh if it doesn’t exist).
的副本,已编辑以适合