我有一个Django应用程序和一个虚拟env,我尝试在nginx+uwsgi下运行它。我已经按照here的描述配置了整个系统。我还有CentOS 7。在
然而,我得到了著名的“ImportError:No module named site”。这里没有其他关于堆栈溢出的主题可以帮助我解决这个问题。在
在uwsgi的日志中有两行:
Set PythonHome to /hedgehog/.virtualenv/hedgehog
ImportError: No module named site
/etc/uwsgi/sites/hedgehog.ini:
[uwsgi]
project = hedgehog
username = hedgehog
base = /var/www/%(username)/code
chdir = /var/www/hedgehog/code
home = /%(username)/.virtualenv/%(username)
module = %(username).wsgi:application
master = true
processes = 5
uid = %(username)
socket = /run/uwsgi/%(project).sock
chown-socket = %(username):nginx
chmod-socket = 660
vacuum = true
logto = /var/www/%(username)/log/uwsgi.log
/etc/systemd/系统/uwsgi.服务公司名称:
^{pr2}$该应用程序位于/var/www/hedgehog/code中。在
似乎uwsgi不知何故不使用virtualenv。我尝试将此添加到ini文件:
plugins = python
virtualenv = %(home)
没用。在
但是,如果我在这个virtualenv的python解释器中运行“import site”,它不会出错:
[rreimche@rreimche-web sites]$ sudo -u hedgehog -H bash -l
[sudo] password for rreimche:
[hedgehog@rreimche-web sites]$ python
Python 2.7.5 (default, Jun 24 2015, 00:41:19)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> exit()
您不需要在配置中使用virtualenv条目,因为它与home条目是相同的选项。/%(用户名)/.virtualenv/%(用户名)应解析为/hedgehog/.virtualenv/hedgehog。ls-l/hedgehog/.virtualenv/hedgehog说什么? 您可能还需要检查是否正在为创建virtualenv所使用的python版本加载python插件。 请粘贴更多日志,可能会有更多的错误提示。在
当我将virtualenv切换到使用python3时,也发生了这种情况,它在python2.7下运行得很好。我的解决方法如下:
更换
plugins = python
与
plugins = python3
我也有同样的错误和错误: 我错用了Python3虚拟机。一旦我使用了Python2.7虚拟机,它就起作用了。在
干杯
相关问题 更多 >
编程相关推荐