簡體   English   中英

部署python Django項目到Heroku報錯:ModuleNotFoundError: No module named '<settings.py folder name> '</settings.py>

[英]Deploying python Django project to Heroku error: ModuleNotFoundError: No module named '<settings.py folder name>'

更新:我在理解我的問題是什么方面取得了突破,我將在下面 state。

我正在嘗試將 django 項目部署到 Heroku,但我在底部遇到了這個錯誤:

2022-03-04T03:32:53.360457+00:00 heroku[web.1]: Starting process with command `gunicorn --pythonpath backend.core backend.core.wsgi --log-file -`
2022-03-04T03:32:55.579764+00:00 heroku[web.1]: State changed from starting to crashed
2022-03-04T03:32:54.908542+00:00 app[web.1]: [2022-03-04 03:32:54 +0000] [4] [INFO] Starting gunicorn 20.1.0
2022-03-04T03:32:54.908855+00:00 app[web.1]: [2022-03-04 03:32:54 +0000] [4] [INFO] Listening at: http://0.0.0.0:39265 (4)
2022-03-04T03:32:54.908899+00:00 app[web.1]: [2022-03-04 03:32:54 +0000] [4] [INFO] Using worker: sync
2022-03-04T03:32:54.912389+00:00 app[web.1]: [2022-03-04 03:32:54 +0000] [9] [INFO] Booting worker with pid: 9
2022-03-04T03:32:54.974193+00:00 app[web.1]: [2022-03-04 03:32:54 +0000] [10] [INFO] Booting worker with pid: 10
2022-03-04T03:32:55.113641+00:00 app[web.1]: [2022-03-04 03:32:55 +0000] [9] [ERROR] Exception in worker process
2022-03-04T03:32:55.113643+00:00 app[web.1]: Traceback (most recent call last):
2022-03-04T03:32:55.113660+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2022-03-04T03:32:55.113661+00:00 app[web.1]:     worker.init_process()
2022-03-04T03:32:55.113661+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 134, in init_process
2022-03-04T03:32:55.113661+00:00 app[web.1]:     self.load_wsgi()
2022-03-04T03:32:55.113662+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2022-03-04T03:32:55.113662+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2022-03-04T03:32:55.113662+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
2022-03-04T03:32:55.113663+00:00 app[web.1]:     self.callable = self.load()
2022-03-04T03:32:55.113663+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2022-03-04T03:32:55.113663+00:00 app[web.1]:     return self.load_wsgiapp()
2022-03-04T03:32:55.113663+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2022-03-04T03:32:55.113664+00:00 app[web.1]:     return util.import_app(self.app_uri)
2022-03-04T03:32:55.113664+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/util.py", line 359, in import_app
2022-03-04T03:32:55.113664+00:00 app[web.1]:     mod = importlib.import_module(module)
2022-03-04T03:32:55.113665+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
2022-03-04T03:32:55.113665+00:00 app[web.1]:     return _bootstrap._gcd_import(name[level:], package, level)
2022-03-04T03:32:55.113665+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
2022-03-04T03:32:55.113666+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
2022-03-04T03:32:55.113666+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
2022-03-04T03:32:55.113666+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
2022-03-04T03:32:55.113666+00:00 app[web.1]:   File "<frozen importlib._bootstrap_external>", line 883, in exec_module
2022-03-04T03:32:55.113667+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
2022-03-04T03:32:55.113667+00:00 app[web.1]:   File "/app/backend/core/wsgi.py", line 16, in <module>
2022-03-04T03:32:55.113667+00:00 app[web.1]:     application = get_wsgi_application()
2022-03-04T03:32:55.113667+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2022-03-04T03:32:55.113668+00:00 app[web.1]:     django.setup(set_prefix=False)
2022-03-04T03:32:55.113668+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/django/__init__.py", line 19, in setup
2022-03-04T03:32:55.113668+00:00 app[web.1]:     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2022-03-04T03:32:55.113668+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 87, in __getattr__
2022-03-04T03:32:55.113668+00:00 app[web.1]:     self._setup(name)
2022-03-04T03:32:55.113669+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 74, in _setup
2022-03-04T03:32:55.113669+00:00 app[web.1]:     self._wrapped = Settings(settings_module)
2022-03-04T03:32:55.113669+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 183, in __init__
2022-03-04T03:32:55.113669+00:00 app[web.1]:     mod = importlib.import_module(self.SETTINGS_MODULE)
2022-03-04T03:32:55.113670+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
2022-03-04T03:32:55.113670+00:00 app[web.1]:     return _bootstrap._gcd_import(name[level:], package, level)
2022-03-04T03:32:55.113670+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
2022-03-04T03:32:55.113670+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
2022-03-04T03:32:55.113671+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
2022-03-04T03:32:55.113671+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
2022-03-04T03:32:55.113671+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
2022-03-04T03:32:55.113671+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
2022-03-04T03:32:55.113671+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
2022-03-04T03:32:55.113671+00:00 app[web.1]: ModuleNotFoundError: No module named 'core'
2022-03-04T03:32:55.113893+00:00 app[web.1]: [2022-03-04 03:32:55 +0000] [9] [INFO] Worker exiting (pid: 9)
2022-03-04T03:32:55.148185+00:00 app[web.1]: [2022-03-04 03:32:55 +0000] [10] [ERROR] Exception in worker process

試圖在我的 procfile 中提供一些信息

web: gunicorn --pythonpath backend.core backend.core.wsgi --log-file - 
release: python backend.manage.py makemigrations - - no-input

內部需求.txt

asgiref==3.5.0
attrs==21.4.0
beautifulsoup4==4.10.0
bs4==0.0.1
certifi==2021.10.8
charset-normalizer==2.0.12
Django==4.0.3
django-core==1.4.1
django-cors-headers==3.11.0
django-filter==21.1
djangorestframework==3.13.1
gunicorn==20.1.0
idna==3.3
jsonlines==3.0.0
lxml==4.8.0
pytz==2021.3
requests==2.27.1
soupsieve==2.3.1
sqlparse==0.4.2
urllib3==1.26.8
virtualenv-tools3==2.0.5
whitenoise==6.0.0

我將我的項目設置為

FE_APP/

runtime.txt
requirements.txt
Procfile
backend/
scraper.py

FE_APP/backend/

api/
core/
static/
db.sqlite3
manage.py

FE_APP/backend/core/

__init__.py
errorlog
settings.py
urls.py
wsgi.py

FE_APP/backend/api/中,我的views.py確實從 core.settings 導入了幾個變量。

from core.settings import REALMS, GAME_TITLES

但我懷疑這是否是我對這種部署產生干擾的原因。 我可以很好地部署在我的本地機器上,但 heroku 一直給我這個錯誤。 我覺得我離部署很近了,這是怎么回事?


3 月 7 日更新編輯:我最初將包含 settings.py 和 wsgi.py 的文件夾命名為“core”,最近我按照這里的教程將其更改為“feh”。 現在,當我在終端上運行heroku local命令時,出現錯誤

ModuleNotFoundError: No module named 'feh'

在其他垃圾中,讓我相信任何 django 核心模塊名稱與文件夾沖突之間沒有沖突。 我不知道如何戰勝它,但至少我正在取得進步。

雖然我還沒有完全解決部署問題,因為我還有另一個障礙需要解決(我可能會為此發表另一篇文章),但我想我通過在我的 wsgi.py 文件中添加 whitenoise 模塊和下面的實現來解決這個問題:

wsgi.py

import os

from django.core.wsgi import get_wsgi_application
from whitenoise import WhiteNoise

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'feh.settings')

application = get_wsgi_application()
application = WhiteNoise(application)

編輯:我還有另一個錯誤導致 heroku 部署失敗,它找不到我的 manage.py 文件。 這是由於我的 Procfile 設置不正確造成的,

Procfile需要這樣設置。

web: gunicorn --pythonpath backend feh.wsgi --log-file - 
release: python backend/manage.py makemigrations --no-input

backend為django項目目錄,但不是待部署項目的根目錄,因此需要--pythonpath指定django項目目錄。 而且我想我的 --no-input 標志中的空格也會導致錯誤。 謝謝克里斯 在這些之后,也許使用 gunicorn 和 whitenoise 以及 django-heroku 模塊(不記得這是之前還是之后,對不起),我開始工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM