所以这似乎是这个设置的一个非常常见的问题,但我找不到任何适用于SO的解决方案。我已经设置了一个非常新的 Ubuntu 15.04 服务器,然后安装了 nginx、virtualenv(和 -wrapper)和 uWSGI(通过 apt-get,所以是全局的,而不是在 virtualenv 内部)。
我的 virtualenv 位于/root/Env/example
。在 virtualenv 内部,我安装了 Django,然后在 /srv/www/example/app 运行 Djangostartproject
带有项目名称的命令example
,所以我模糊地有这样的结构:
-root
-Env
-example
-bin
-lib
-srv
-www
-example
-app
-example
manage.py
-example
wsgi.py
...
我的 uWSGI example.ini 文件如下所示:
[uwsgi]
project = example
plugin = python
chdir = /srv/www/example/app/example
home = /root/Env/example
module = example.wsgi:application
master = true
processes = 5
socket = /run/uwsgi/app/example/example.socket
chmod-socket = 664
uid = www-data
gid = www-data
vacuum = true
但无论我是否通过运行这个uwsgi --ini /etc/uwsgi/apps-enabled/example.ini
或者通过守护进程,我得到完全相同的错误:
Python version: 2.7.9 (default, Apr 2 2015, 15:37:21) [GCC 4.9.2]
Set PythonHome to /root/Env/example
ImportError: No module named site
我应该注意到 Django 项目通过内置的开发服务器工作./manage.py runserver
,当我删除home = /root/Env/example
这个东西可以工作(但显然使用全局Python和Django而不是virtualenv版本,这意味着它对于正确的virtualenv设置是没有用的)。
任何人都可以看到一些我没有看到的明显路径错误吗?据我所知,home
根据我的目录结构以及 ini 中的其他所有内容,这是完全正确的,那么为什么它不能处理此 ImportError 呢?