找不到部署 Heroku 的 WSGI 模块

Pav*_*ich 3 python django wsgi heroku

尝试使用教程部署我的应用程序。有一个ModuleNotFoundError: No module named 'radio.wsgi'消息。

2019-08-21T08:08:21.409841+00:00 app[web.1]: __import__(module)
2019-08-21T08:08:21.409849+00:00 app[web.1]: ModuleNotFoundError: No module named 'radio.wsgi'
2019-08-21T08:08:21.409960+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-08-21T08:08:21.441211+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Shutting down: Master
2019-08-21T08:08:21.441415+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Reason: Worker failed to boot.
Run Code Online (Sandbox Code Playgroud)

在其他一些问题中人们推荐,python manage.py run_gunicorn但我有Unknown command: 'run_gunicorn'

简介:

web: gunicorn radio.wsgi --log-file -
Run Code Online (Sandbox Code Playgroud)

wsgi.py

2019-08-21T08:08:21.409841+00:00 app[web.1]: __import__(module)
2019-08-21T08:08:21.409849+00:00 app[web.1]: ModuleNotFoundError: No module named 'radio.wsgi'
2019-08-21T08:08:21.409960+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-08-21T08:08:21.441211+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Shutting down: Master
2019-08-21T08:08:21.441415+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Reason: Worker failed to boot.
Run Code Online (Sandbox Code Playgroud)

只有在那些文件中提到了 WSGI。

要求.txt

dj-database-url==0.5.0
Django==2.2.4
gunicorn==19.9.0
lxml==4.4.1
psycopg2-binary==2.8.3
pytz==2019.2
sqlparse==0.3.0
whitenoise==4.1.3
Run Code Online (Sandbox Code Playgroud)

这是项目结构

??? radio
?   ??? db.sqlite3
?   ??? manage.py
?   ??? player
?   ??? radio
?   ?   ??? __init__.py
?   ?   ??? __pycache__
?   ?   ??? settings.py
?   ?   ??? urls.py
?   ?   ??? wsgi.py
?   ??? setup.py
?   ??? static
??? README.md
??? .gitignore
??? requirements.txt
??? runtime.txt
??? Procfile
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 6

Heroku 希望Procfile在项目根目录中。如果 Django 应用程序manage.py也在项目根目录中,那么部署它是最容易的。例如,如果您的项目布局是:

??? db.sqlite3
??? manage.py
??? player
??? radio
?   ??? __init__.py
?   ??? __pycache__
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? setup.py
??? static
??? README.md
??? .gitignore
??? requirements.txt
??? runtime.txt
??? Procfile
Run Code Online (Sandbox Code Playgroud)

然后你可以运行:

web: gunicorn radio.wsgi
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您的 Django 项目位于radio目录中。如果您不想更改项目布局,那么您需要添加radio到 python 路径,以便 python 导入工作:

web: gunicorn --pythonpath radio radio.wsgi
Run Code Online (Sandbox Code Playgroud)