uwsgi + django 导入错误

2 投票
2 回答
5059 浏览
提问于 2025-04-16 02:40

我在用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(尽管页面顶部的索引说的可能不一样)。这两个方法都值得一试。

撰写回答