【发布时间】:2017-08-31 00:58:01
【问题描述】:
所以这似乎是这个设置的一个非常常见的问题,但我找不到任何适用于 SO 的解决方案。我已经设置了一个非常新的 Ubuntu 15.04 服务器,然后安装了 nginx、virtualenv(和 -wrapper)和 uWSGI(通过 apt-get,所以是全局的,而不是在 virtualenv 中)。
我的 virtualenv 位于/root/Env/example。在 virtualenv 内部,我安装了 Django,然后在 /srv/www/example/app 运行 Django 的 startproject 命令,项目名称为 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?
【问题讨论】:
-
解决了吗?
标签: virtualenv uwsgi