【发布时间】:2017-03-16 10:53:49
【问题描述】:
我正在尝试使用内置的wsgi 运行我的 django 应用程序。我的目录结构如下:
/project/
-/project/
- settings.py
- wsgi.py
- urls.py
-/app/
这是提供的wsgi.py 文件,我稍作修改。
import os
from django.core.wsgi import get_wsgi_application
# used to be crowdlabel.settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
application = get_wsgi_application()
if __name__ == "__main__":
application.run()
运行 python project/wsgi.py 时,我收到一个错误,即找不到模块 project。为了解决这个问题,我更改了os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")。这样做会在get_wsgi_application() 函数ModuleNotFoundError: No module named 'app' 中给我一个新错误。
我非常困惑,所以如果有经验的人可以提出我做错了什么,将不胜感激。请注意,该应用在测试服务器上运行良好。
【问题讨论】:
-
需要将外部
project目录添加到python路径中。例如,请参阅 deploying with Apache and modwsgi 的 Django 文档,其中设置了WSGIPythonPath。 -
内置
wsgi是什么意思?你为什么不直接运行python manage.py runserver?据我所知,application上也没有run()方法。不知道您从哪里得到该行,因为不在生成的wsgi.py文件中。 -
我需要投入生产,显然最好使用像 nginx 这样的东西而不是测试服务器。 application.run() 也是在黑暗中刺伤,并没有改变任何事情 afaik
-
你看过 gunicorn、uWSGI 或 mod_wsgi 吗?有关部署的 Django 文档可以在 docs.djangoproject.com/en/1.10/howto/deployment 找到
-
我正在尝试遵循uwsgi-docs.readthedocs.io/en/latest/tutorials/… 教程,但 nginx->wsgi 服务似乎不起作用。我认为这是一个单独的小问题
标签: django python-3.x wsgi