uwsgi + django 导入错误
我在用django和uwsgi的时候遇到了一个问题,跟python路径有关。
我有一个叫做'project'的django项目,它在/sites/django/这个文件夹里。
所以我启动uwsgi的时候用这个命令:
/opt/uwsgi/uwsgi -s 127.0.0.1:9001 -C -M 4 -t 30 -A 4 -p 4 -d /var/log/uwsgi.log --pythonpath '/sites/django/project/' --module wsgi
如果我在'/sites/django/project'这个目录下,命令是可以正常工作的。
如果我打开一个python命令行,然后输入:
import sys
sys.path.append('/sites/django/project/')
import wsgi
这个也能正常运行。
但是当我在'/sites/django/project/'目录外启动uwsgi命令时,就出现了错误:
ImportError: No module named wsgi
所以我不明白为什么会出现这个ImportError错误:在命令行里是可以正常工作的。
如果有人知道原因,麻烦告诉我,谢谢。
后来我找到了答案,似乎是个bug,我需要在我的命令中加上“-i”选项(单一解释器模式)。
2 个回答
0
如果你在使用虚拟环境(virtualenv),你需要加上 -H 这个参数(http://projects.unbit.it/uwsgi/wiki/VirtualEnv)
1
这个文档似乎提供了两种可能的解决办法。
首先,可以试着把python路径参数中的单引号去掉。其次,链接页面上的例子使用的是--python-path
,而不是--pythonpath
(尽管页面顶部的索引说的可能不一样)。这两个方法都值得一试。