#python #django #heroku #gunicorn
#python #django #heroku #gunicorn
Вопрос:
Я получаю ModuleNotFoundError: No module named 'django'
, если я развертываю свой Django-проект в Heroku. Кто-нибудь знает, почему это так?
Прилагается полный файл журнала, который появляется после открытия. Я искал несколько часов, но не могу его решить…
2021-04-24T21:54:55.188701 00:00 heroku[web.1]: State changed from crashed to starting
2021-04-24T21:54:59.835950 00:00 heroku[web.1]: Starting process with command `gunicorn MPLoadManagement.wsgi --log-file -`
2021-04-24T21:55:02.907766 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [4] [INFO] Starting gunicorn 19.9.0
2021-04-24T21:55:02.908183 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [4] [INFO] Listening at: http://0.0.0.0:3028 (4)
2021-04-24T21:55:02.908277 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [4] [INFO] Using worker: sync
2021-04-24T21:55:02.909677 00:00 app[web.1]: /app/.heroku/python/lib/python3.9/os.py:1023: RuntimeWarning: line buffering (buffering=1) isnt supported in binary mode, the default buffer size will be used
2021-04-24T21:55:02.909678 00:00 app[web.1]: return io.open(fd, *args, **kwargs)
2021-04-24T21:55:02.912935 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [7] [INFO] Booting worker with pid: 7
2021-04-24T21:55:02.919805 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [7] [ERROR] Exception in worker process
2021-04-24T21:55:02.919807 00:00 app[web.1]: Traceback (most recent call last):
2021-04-24T21:55:02.919817 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2021-04-24T21:55:02.919818 00:00 app[web.1]: worker.init_process()
2021-04-24T21:55:02.919818 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 129, in init_process
2021-04-24T21:55:02.919818 00:00 app[web.1]: self.load_wsgi()
2021-04-24T21:55:02.919819 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2021-04-24T21:55:02.919819 00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-04-24T21:55:02.919820 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-04-24T21:55:02.919820 00:00 app[web.1]: self.callable = self.load()
2021-04-24T21:55:02.919820 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2021-04-24T21:55:02.919821 00:00 app[web.1]: return self.load_wsgiapp()
2021-04-24T21:55:02.919821 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2021-04-24T21:55:02.919821 00:00 app[web.1]: return util.import_app(self.app_uri)
2021-04-24T21:55:02.919822 00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/util.py", line 350, in import_app
2021-04-24T21:55:02.919822 00:00 app[web.1]: __import__(module)
2021-04-24T21:55:02.919823 00:00 app[web.1]: File "/app/MPLoadManagement/wsgi.py", line 12, in <module>
2021-04-24T21:55:02.919823 00:00 app[web.1]: from django.core.wsgi import get_wsgi_application
2021-04-24T21:55:02.919823 00:00 app[web.1]: ModuleNotFoundError: No module named 'django'
2021-04-24T21:55:02.919969 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [7] [INFO] Worker exiting (pid: 7)
2021-04-24T21:55:02.953092 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [4] [INFO] Shutting down: Master
2021-04-24T21:55:02.953195 00:00 app[web.1]: [2021-04-24 21:55:02 0000] [4] [INFO] Reason: Worker failed to boot.
2021-04-24T21:55:03.019883 00:00 heroku[web.1]: Process exited with status 3
2021-04-24T21:55:03.124137 00:00 heroku[web.1]: State changed from starting to crashed
Requirements.txt
appdirs==1.4.4
asgiref==3.3.1
astroid==2.5.2
beautifulsoup4==4.9.3
certifi==2020.12.5
distlib==0.3.1
dj-database-url==0.5.0
Django==3.1.7
django-autoslug==1.9.8
django-bootstrap-modal-forms==2.1.0
django-bootstrap4==2.3.1
django-crispy-forms==1.11.2
django-heroku==0.0.0
django-widget-tweaks==1.4.8
filelock==3.0.12
gunicorn==19.9.0
isort==5.8.0
lazy-object-proxy==1.6.0
mccabe==0.6.1
pipenv==2020.11.15
psycopg2-binary==2.8.6
pylint==2.7.4
pytz==2021.1
six==1.15.0
soupsieve==2.2.1
sqlparse==0.4.1
toml==0.10.2
virtualenv==20.4.4
virtualenv-clone==0.5.4
whitenoise==5.2.0
wrapt==1.12.1
Ответ №1:
В ваших требованиях измените файл psycopg2-binary
на просто psycopg2
Вы устанавливаете django-heroku==0.0.0
это то, что вы действительно хотите?
Комментарии:
1. Я изменил его на «django-heroku == 0.3.1» и «psycopg2 == 2.8.6». Начальные версии создаются автоматически с помощью «pip freeze> requirements.txt «, поэтому я предположил, что они верны. после изменения ошибка «ModuleNotFoundError: нет модуля с именем ‘django'» по-прежнему появляется в журналах
2. из моих исследований кажется, что некоторые пакеты устанавливаются неправильно, и это предотвращает установку django или django-heroku
Ответ №2:
Я развернул более 5 проектов в Heroku, и я никогда не сталкивался с подобной ошибкой, но из сообщения об ошибке очевидно, что Django не установлен, вероятно, повторно разверните свой проект и посмотрите, работает ли он
Ответ №3:
Теперь я смог решить проблему. Это было потому, что я не создал папки static_root и staticfiles_storage, которые необходимы для производственного развертывания