Django,uwsgi,nginx,virtualenv,ImportError:没有名为si的模块

2024-05-29 10:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()

Tags: 应用程序virtualenvvar系统wwwusernamesitecode
3条回答

您不需要在配置中使用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虚拟机,它就起作用了。在

干杯

相关问题 更多 >

    热门问题