Django Makemigrations возвращает ModuleNotFoundError: с именем модуля с суффиксом 'django' - PullRequest
2 голосов
/ 04 марта 2020

Я следую учебному курсу Python Cra sh 2e. Я столкнулся с проблемой с функцией makemigrations из Django главы (18). Я создал первое приложение, используя startapp, а затем попытался вызвать makemigrations. Он возвращает ModuleNotFoundError, но дает имя приложения с суффиксом «django». Я сделал следующее:

python -m venv ll_env
ll_env\Scripts\activate
pip install django (installed asgiref-3.2.3 django-3.0.3 pytz-2019.3 sqlparse-0.3.1)
django-admin startproject learning_log .
python manage.py migrate
python manage.py runserver

Эта часть работает без сбоев, веб-сервер работает, все отлично. Затем я открыл еще один терминал (на уровне проекта) и набрал:

ll_env\Scripts\activate
python manage.py startapp learning_logs
<edited settings.py to include 'learning_logs'>
python manage.py makemigrations learning_logs

В результате makemigrations возвращает эту трассировку:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\Admin\PycharmProjects\djangoproj\ll_env\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\Admin\PycharmProjects\djangoproj\ll_env\lib\site-packages\django\core\management\__init__.py", line 377, in execute
    django.setup()
  File "C:\Users\Admin\PycharmProjects\djangoproj\ll_env\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\Admin\PycharmProjects\djangoproj\ll_env\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "C:\Users\Admin\PycharmProjects\djangoproj\ll_env\lib\site-packages\django\apps\config.py", line 116, in create
    mod = import_module(mod_path)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'learning_logsdjango'

settings.py включает мой модуль:

INSTALLED_APPS = [
    'learning_logs'
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Мой каталог:

projectFolder/
    learning_log/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    learning_logs/
        migrations/
            __init__.py
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
    ll_env/
        include/
        Lib/
        Scripts/
    venv/
    db.sqlite3
    manage.py

Я работаю на Windows 10 x64, Pycharm Community 2019.2.3, Python 3.8.

Что я пробовал: 1) смена имени 2) установка предыдущей версии django (2.2.11) 3) вызов 'makemigrations' вместо 'makemigrations learning_logs'

Буду признателен за любую помощь, так как я совершенно запутался в этом.

1 Ответ

1 голос
/ 04 марта 2020

Это потому, что django не распознает, что вы пытаетесь создать приложение для повторного использования, если вы не пытаетесь создать приложение для повторного использования, просто удалите имя приложения из списка, в противном случае, я бы еще раз посмотрите на https://docs.djangoproject.com/en/2.1/intro/reusable-apps/

, а также, как отмечается в комментарии, вам не хватает , после названия вашего приложения в списке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...