При попытке использовать Tox, чтобы лучше оптимизировать тестирование в нескольких средах, я подножка в следующей ошибки при тестировании Python 3.4:Tox и django_toolbar: ImportError
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 не бросает эту ошибку и умеет отлично выполнять тесты.
Что может быть причиной этого?
EDIT: для справки, вот моя текущая настройка. Когда я запускаю ток в первый раз (т. Е. Без .tox), он работает нормально, но в любое время после этого он терпит неудачу. Каталог .tox
действительно работает правильно; все зависимости устанавливаются в .tox/py34/lib/python3.4/site-packages
. По сравнению с ранее, я теперь также удалил django
, и действительно, это теперь первая зависимость, которая терпит неудачу.
(venv)[email protected]:myproject/ (master✗) % rm -rf .tox
(venv)[email protected]:myproject/ (master✗) % cat tox.ini
[tox]
envlist = py27,py34
skipsdist = True
[testenv]
deps = -r{toxinidir}/requirements.txt
commands = python manage.py test
(venv)[email protected]: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)[email protected]: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)[email protected]:myproject/ (master✗) %
Да, это меня тоже интересует .. Я не настроил текс каким-либо другим способом, кроме перечисленных в «tox.ini», и не понимаю, почему он не останется в виртуальном env, который он должен создать с помощью ' requirements.txt'. Странно, что он работает для Python 2.7. Я удалил Django локально сейчас, а затем ошибка, которую я получаю, - 'ImportError: Нет модуля с именем 'django'' – Joost
Попробуйте удалить' skipsdist = True' из вашего tox.ini. Возможно, это предотвращает установку Django, если Django является 'sdist'? Кроме того, попробуйте запустить ток один раз, затем загляните в папку '.tox' для Python 3 virtualenv и посмотрите, установлены ли какие-либо пакеты. –
Как в стороне, ваш 'setenv = PYTHONPATH = {toxinidir}: {toxinidir}' относится к '{toxinidir}' TWICE. Двоеточие - это символ разделения. В идеале вы хотели бы указать только на '{toxinidir}' или на этот каталог, а также на '{toxinidir}/your-module-name'. –