ModuleNotFoundError при выполнении '$ python manage.py collectstatic --noinput'
Я пытался решить эту проблему, много искал, но не смог найти никаких решений. Я пытаюсь развернуть мое приложение django на heroku из heroku-CLI, но получил эту ошибку при выполнении '$ python manage.py collectstatic --noinput'.
ModuleNotFoundError: No module named 'my_app.settings.local'; 'quiz_api.settings' is not a package
!Error while running '$ python manage.py collectstatic --noinput'.
Эта ошибка возникла после того, как settings.py был разделен на base.py, local.py и product.py. До этого проблем не было вообще.
root
my_project
-my_app
-settings
__init___.py "in settings dir"
base.py
local.py
production.py
__init__.py "in my_app dir"
wsgi.py
etc...
.env
manage.py
etc...
base.py (BASE_DIR может быть проблемой)
manage.py
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_app.settings.local')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_app.settings')
application = get_wsgi_application()
Я думал, что проблема в том, что my_app или settings не рассматриваются как модули, даже включая файл init.py, поэтому я протестировал в локальном окружении, после чего все работает нормально без каких-либо проблем. (в этом случае local.py был прочитан)
также, я установил DJANGO_SETTINGS_MODULE = my_app.settings.production в Config Vars (пробовал my_app, my_app.settings тоже), но все равно выдает ошибку, что просто масса отличается как 'my_app.settings.production'; 'quiz_api.settings' не является пакетом. Таким образом, я понял, что проблема в том, что мое приложение не рассматривается как модуль при запуске '$ python manage.py collectstatic --noinput'.
любое предложение, пожалуйста.
В вашем файле settings.py
просто добавьте этот код:
import django_heroku
django_heroku.settings(locals()) #Activate django heroku.
Попробуйте и посмотрите, решит ли это вашу ошибку