我在Django(version=1.4)项目中使用uwsgi,但是如果运行
uwsgi --ini django.ini
from django.core.wsgi import get_wsgi_application ImportError: No module named django.core.wsgi
但我可以导入django.core.wsgi,如下所示:
>>> import django.core.wsgi
django.ini文件:
[uwsgi] chdir=/path/to/my/app module=app.wsgi:application master=True vacuum=True max-requests=5000 socket=127.0.0.1:9000
wsgi.py公司
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
当uwsgi尝试读取wsgi.py文件时,通常会出现以下错误
ImportError: No module named django.core.wsgi
:它找不到这些模块,因为没有安装Django,或者如果安装了Django,它就不在PYTHONPATH中。
如果您的项目位于virtualenv中,而Django仅安装在此virtualenv中,则Django模块的路径不在PYTHONPATH中,因此Python找不到它。
如果您感兴趣,可以将以下代码插入
wsgi.py
文件,并查看PYTHONPATH:如果运行安装在virtualenv中的本地版本的uwsgi,则路径设置将正确,但如果运行全局版本的uwsgi,则通常不会正确设置PYTHONPATH。
你可以告诉uWSGI到virtualenv的路径,它会找出正确的PYTHONPATH。只需使用
--virtualenv
命令行参数,例如:(以下参数的作用与--virtualenv完全相同:--venv,--home,-H)
令人惊讶的是,设置$VIRTUAL_ENV对PYTHONPATH没有影响
奇怪的是,如果不使用--virtualenv参数,环境变量
$VIRTUAL_ENV
将被正确设置。通过插入wsgi.py进行测试:这将打印:
但是PYTHONPATH的设置不正确,并且不包含来自virtualenv的任何内容。
我无法解释这是为什么。
如果使用virtualenv,请尝试将
home
添加到django.ini:要通过web浏览器进行测试,请执行以下操作:
如果在
sudo apt-get install gunicorn
和(venv) pip install gunicorn
上都安装了gunicorn,请使用sudo apt-get remove gunicorn
并重新启动虚拟环境。这样,对我有效。相关问题 更多 >
编程相关推荐