Skip to main content
 首页 » 编程设计

python之Gunicorn+Django+Heroku。 Python路径问题

2024年08月29日30haluo1

我正在运行一个 Django 应用程序,我曾经使用 Gunicorn 将它部署到 Heroku 上,没有任何障碍。我的意思是我可以跑

foreman start 

在我的本地主机上,并能够了解该应用程序是否可以在生产环境中运行。我最近决定将我们项目的所有应用程序移动到名为“应用程序”的子文件夹中。这意味着在其他文件中编辑我的 DJANGO_SETTINGS_MODULE 环境变量。这样做之后,我用工头和 gunicorn 进行了试验,直到我启动并运行了本地服务器。此时我部署到生产环境。不用说,有一个错误:

Running `gunicorn --workers=4 applications.rocketlistings.wsgi -b 0.0.0.0: -k gevent` attached to terminal... up, run.8052 
Traceback (most recent call last): 
  File "/app/.heroku/python/bin/gunicorn", line 9, in <module> 
    load_entry_point('gunicorn==0.17.2', 'console_scripts', 'gunicorn')() 
  File "/app/.heroku/python/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 343, in load_entry_point 
    return get_distribution(dist).load_entry_point(group, name) 
  File "/app/.heroku/python/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 2307, in load_entry_point 
    return ep.load() 
  File "/app/.heroku/python/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 2013, in load 
    entry = __import__(self.module_name, globals(),globals(), ['__name__']) 
ImportError: No module named app.wsgiapp 

我不确定我做错了什么,而且由于模糊的远程设置 heroku 运行,很难调试这种情况。 Other threads讨论这个错误表明这是一个路径问题。这听起来很有道理,但我想不出路径有什么问题,因为我的应用程序文件夹中有一个 init.py 文件,并且一切都在本地运行。

无论如何,这是我的生产路径/pythonpath:

Running `echo $PATH` attached to terminal... up, run.2583 
/app/.heroku/python/bin:/usr/local/bin:/usr/bin:/bin 
 
Running `echo $PYTHONPATH` attached to terminal... up, run.8026 
/app/ 

提前致谢!

请您参考如下方法:

有时,当 Gunicorn 在 PYTHONPATH 中发现另一个名为“app”的模块时,就会发生这种情况。将 PYTHONPATH 设置为假值可解决问题:

$ heroku config:set PYTHONPATH=fakepath 

https://github.com/heroku/heroku-buildpack-python/wiki/Troubleshooting#no-module-named-appwsgiapp