Django Gunicorn:无法找到应用程序

3

我使用Python 3.4虚拟环境进行了全新的Django安装。然后,我尝试按照教程启动Gunicorn,并在第一次运行时进行测试,但失败了。我的开发服务器已完全配置好,但Gunicorn无法运行,显示相同的错误信息,即找不到名为<Django项目名称>.wsgi 的模块。

(test_projectprodenv)djangouser@ff:~$ gunicorn test_project.wsgi:application --bind 162.243.195.141:8001
Exception in worker process:
Traceback (most recent call last):
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 502, in spawn_worker
    worker.init_process()
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/workers/base.py", line 114, in init_process
    self.wsgi = self.app.wsgi()
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/app/base.py", line 66, in wsgi
    self.callable = self.load()
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/home/djangouser/test_projectprodenv/lib/python3.4/site-packages/gunicorn/util.py", line 356, in import_app
    __import__(module)
ImportError: No module named 'test_project.wsgi'

我建立了一个新服务器来测试这个 Django 项目,唯一的理由是希望 gunicorn 能够工作。我认为在旧的 dev 服务器上可能出现了配置问题。请注意,这是全新的。除了配置数据库之外,我未修改 Django 项目文件夹或 settings.py 文件。
编辑:添加文件结构。
(test_projectprodenv)djangouser@ff:~$ ls
test_project  test_projectprodenv  

(test_projectprodenv)djangouser@ff:~/test_project$ tree
.
├── test_project
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-34.pyc
│   │   ├── settings.cpython-34.pyc
│   │   ├── urls.cpython-34.pyc
│   │   └── wsgi.cpython-34.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

2 directories, 9 files

gunicorn命令是从test_project文件夹中执行的。

(test_projectprodenv)djangouser@ff:~$ which gunicorn
/home/djangouser/test_projectprodenv/bin/gunicorn

似乎是路径问题。你能否请提供您的目录结构,并指出您正在运行上述命令的文件夹? - Sohan Jain
@SohanJain 是的,抱歉,我已经添加了。我在virtualenv中安装了gunicorn,所以我在激活virtualenv时执行gunicorn命令。 - user1757703
3
你发布的堆栈跟踪表明你正在从你的主文件夹运行gunicorn,你需要从/home/djangouser/test_project运行它。 - Jeremy Allen
1
@JeremyAllen 您好,您说得完全正确。这个问题困扰了我整整一周。最终我在stackoverflow上发布了帖子,您在几分钟内就解决了它。感谢您,上帝保佑您。非常感谢: ) 如果您愿意,请将其作为答案发布,以便对未来遇到相同问题的用户有所帮助。 - user1757703
1个回答

15
如果您的应用程序未与Gunicorn一起安装在Python环境中,则必须将其添加到Python路径中,以便Gunicorn可以看到它,要么通过从包所在位置运行,要么通过通过--pythonpath STRING命令行选项指定该位置。因此,要么从~/test_project启动服务器:
~/test_project$ gunicorn test_project.wsgi:application --bind 162.243.195.141:8001

或者使用--pythonpath选项在您的主目录中:

~$ gunicorn test_project.wsgi:application --pythonpath test_project --bind 162.243.195.141:8001

太棒了。--pythonpath选项和你的解释帮了我很多。谢谢 :) - user1757703

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接