Django ModuleNotFoundError при выполнении миграций - PullRequest
0 голосов
/ 17 февраля 2020

Прежде всего: я хорошо знаю, что есть несколько вопросов с этой точной ошибкой, но я прочитал по крайней мере 20 из них, и ни один не помог мне исправить эту ошибку.

Как говорится, проблема выглядит следующим образом:

Я создал каталог с именем 'api' внутри моего Django проекта для хранения всего кода, связанного с API. Внутри этой директории я создал приложение под названием «profile_app». Там в файле models.py я определил класс UserProfile, чтобы переопределить класс Django UserProfile по умолчанию. Затем я добавил приложение в переменную INSTALLED_APPS в файле settings.py и переопределил класс UserProfile по умолчанию следующей строкой:

AUTH_USER_MODEL = 'profiles_api.UserProfile'

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

Это трассировка стека:

    (venv) C:\Users\Juan Pablo\Documents\backend\backend_django>python manage.py 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\JUANPA~1\Envs\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\JUANPA~1\Envs\venv\lib\site-packages\django\core\management\__init__.py", line 377, in execute
    django.setup()
  File "C:\Users\JUANPA~1\Envs\venv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\JUANPA~1\Envs\venv\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "C:\Users\JUANPA~1\Envs\venv\lib\site-packages\django\apps\config.py", line 90, in create
    module = import_module(entry)
  File "C:\Users\JUANPA~1\Envs\venv\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 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'api'

Как вы можете видеть из трассировки, я работаю в виртуальной среде, и это то, что я установил :

asgiref==3.2.3
Django==3.0.3
djangorestframework==3.11.0
mysqlclient==1.4.6
pytz==2019.3
sqlparse==0.3.0

Это структура проекта:

Файл init .py внутри Сначала не было каталога api, но после прочтения некоторых ответов я создал каталог Python вместо каталога, а затем появился этот файл.

Наконец, это то, что переменная INSTALLED_APPS в файле settings.py выглядит так:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
    'api.profiles_api',
]

Я пробовал следующее:

  • 'examples_api' вместо 'api.profiles_api' в INSTALLED_APPS

  • AUTH_USER_MODEL = 'api.profile s_api.UserProfile 'вместо' profile_api.UserProfile '

  • Создание пакета Python с именем api вместо каталога.

Любая помощь очень ценится. Извините за длинный вопрос, но я хотел быть максимально точным.

1 Ответ

0 голосов
/ 18 февраля 2020

Я сделал новый проект и структурировал его следующим образом:

enter image description here

Затем в установленных приложениях я добавил backend_project.Users, и он заработал. До сих пор не знаю, почему первоначальный вопрос был неправильным.

...