我正在尝试用Heroku部署Django项目,并且我知道我的Procfile放在错误的位置。但是,当我将其移动到正确的目录时,该应用程序无法启动。
我最初将Procfile放在我的应用目录中,而不是在项目根目录中,当我尝试将Procfile移到根目录时,我从wsgi.py获取有关我的设置文件的ModuleNotFoundError(我正在使用设置文件夹以分隔开发和生产设置文件,因此我将其设置为一个模块,仅供参考)。
这是我的Procfile:
web: gunicorn my_site.my_site.wsgi --log-file -
这是我的wsgi文件:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_site.settings.production_settings')
application = get_wsgi_application()
这是我尝试在本地运行heroku时遇到的错误:
ModuleNotFoundError: No module named 'my_site.settings'
如果将另一个目录级别添加到设置文件所在的位置(在wsgi.py中):
'my_site.my_site.settings.production_settings'
然后,我在设置中的INSTALLED_APPS中收到有关找不到应用的新错误。似乎我更改Procfile的位置以某种方式弄乱了项目中的所有目录扩展名,这没有任何意义。如果我将Procfile保留在原始位置,则一切正常,除了我无法在heroku上启动dyno之外,因为Procfile的原始位置不是项目的根目录。
编辑 这是目录结构的图片: Where Procfile used to be Where Procfile is now
Procfile曾经位于“ my_site / my_site / my_site”下,但随后我将其移至“ my_site /”下。这不是项目的根目录吗?