2015-05-07 2 views
1

При попытке использовать 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✗) % 

ответ

2

В конце концов, это было решено путем обновления tox. Я еще не уверен, когда это было исправлено точно или какая ошибка была указана как, но с использованием версии 2.1.1 Я больше не получаю эту ошибку.

0
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. Вы каким-то образом настроили ток, чтобы использовать локально установленный Django, а не Django, установленный внутри виртуального?

+0

Да, это меня тоже интересует .. Я не настроил текс каким-либо другим способом, кроме перечисленных в «tox.ini», и не понимаю, почему он не останется в виртуальном env, который он должен создать с помощью ' requirements.txt'. Странно, что он работает для Python 2.7. Я удалил Django локально сейчас, а затем ошибка, которую я получаю, - 'ImportError: Нет модуля с именем 'django'' – Joost

+0

Попробуйте удалить' skipsdist = True' из вашего tox.ini. Возможно, это предотвращает установку Django, если Django является 'sdist'? Кроме того, попробуйте запустить ток один раз, затем загляните в папку '.tox' для Python 3 virtualenv и посмотрите, установлены ли какие-либо пакеты. –

+0

Как в стороне, ваш 'setenv = PYTHONPATH = {toxinidir}: {toxinidir}' относится к '{toxinidir}' TWICE. Двоеточие - это символ разделения. В идеале вы хотели бы указать только на '{toxinidir}' или на этот каталог, а также на '{toxinidir}/your-module-name'. –

Смежные вопросы