Django Coverage ModuleNotFoundError: Нет модуля с именем 'django_extensions' - PullRequest
0 голосов
/ 16 мая 2018

Я копался в SO сообщениях, я копался в случайных непонятных блогах, и я не могу решить мою проблему здесь.

Вот как я поступил со всем этим:

Я создал новую красивую виртуальную среду:

virtualenv venv

Я установил все свои требования:

pip install -r requirements.txt

Согласно документации LocalFlavor Я установил пип django-localflavor

Но когда я пытаюсь запустить покрытие моего приложения в соответствии с django docs :

coverage run --source='.' manage.py test visitor_check_in

Я получаю ошибку 'No module named 'localflavor' ...

Мои установленные приложения выглядят так:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admindocs',
    'localflavor',
    'visitor_check_in',
    'django_extensions',
]

Буквально на прошлой неделе у меня это было запущено, но я, должно быть, недавно что-то запутал во время конференции, когда пробежался по некоторым учебникам или что-то в этом роде - но я был в других виртуальных средах для этих учебников - так что я в замешательстве.

Если я перенесу порядок установленных приложений следующим образом:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admindocs',
    'visitor_check_in',
    'django_extensions',
    'localflavor',
]

Это выдает мне ту же ошибку: модуль не найден - за исключением того, что он не может найти модуль django_extensions

Отслеживание выглядит так:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
    django.setup()
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/apps/config.py", line 94, in create
    module = import_module(entry)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django_extensions'

Как я уже говорил - раньше у меня не было проблем с этим, но сейчас я не могу понять, почему это не работает, из-за своей жизни. У меня тонущее чувство, что что-то действительно простое, я пропускаю, но не могу найти это.

Я могу подтвердить, что я использую Python 3.6 и последнюю версию pip

Отредактировано для добавления: я могу импортировать библиотеку в оболочке Python с помощью import localflavor

1 Ответ

0 голосов
/ 16 мая 2018

Поскольку вы упоминаете, что это происходит только при запуске coverage, вполне возможно, что это происходит, потому что coverage использует не вашу virtualenv, а вашу глобальную установку на python.

Вопросс аналогичной проблемой было опубликовано здесь ранее - Запуск покрытия внутри virtualenv

Очевидно, вам нужно установить coverage в вашем virtualenv, чтобы он работал должным образом.

...