Компиляция Django в pyc и запуск сервера

Ок, так что я бегу

python -m compileall .

Как бы то ни было, сгенерированные файлы находятся в pycache

manage.cpython-311.pyc и urls.cpython-311

Моя проблема заключается в том, что когда я запускаю

python manage.cpython-311.pyc runserver

Я продолжаю получать ошибку

  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'settings'

Я не самый умный разработчик django. Однако я был бы признателен, если бы кто-нибудь поделился со мной, как решить эту проблему.

Когда вы запускаете код Python (а он способен на это и не имеет других указаний), интерпретатор компилирует импорты в .pyc файлы и сохраняет их в __pycache__ папке.

При следующем запуске интерпретатор рассмотрит эти файлы и, если они соответствуют исходному файлу, использует их вместо повторения этапа компиляции.

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

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

Заключение: Запустите исходный файл (.py) и позвольте механизму кэширования выполнять свою работу в фоновом режиме.

Вернуться на верх