Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
虚拟环境中的python是2.7,但Django调试屏幕显示系统';s 2.6.6_Python_Django_Apache_Python 2.7_Mod Wsgi - Fatal编程技术网

虚拟环境中的python是2.7,但Django调试屏幕显示系统';s 2.6.6

虚拟环境中的python是2.7,但Django调试屏幕显示系统';s 2.6.6,python,django,apache,python-2.7,mod-wsgi,Python,Django,Apache,Python 2.7,Mod Wsgi,因此,在我的虚拟环境中,如果我激活它并键入python,就会打开2.7版,这是应该的 当Django中出现错误时,将显示系统默认版本2.6。以下是我的Apache配置: <VirtualHost *:80> ServerName www.mysite.com ErrorLog /var/www/virtualenv-2.7/django-error-log Alias /static/ /var/www/virtualenv-2.7/mysite/mainap

因此,在我的虚拟环境中,如果我激活它并键入
python
,就会打开2.7版,这是应该的

当Django中出现错误时,将显示系统默认版本2.6。以下是我的Apache配置:

<VirtualHost *:80>
    ServerName www.mysite.com
    ErrorLog /var/www/virtualenv-2.7/django-error-log
    Alias /static/ /var/www/virtualenv-2.7/mysite/mainapp/static/
    WSGIDaemonProcess mysite python-path=/var/www/virtualenv-2.7/mysite:/var/www/virtualenv-2.7/lib/python2.7/site-packages
    WSGIProcessGroup mysite
    WSGIScriptAlias / /var/www/virtualenv-2.7/mysite/mysite/wsgi.py

    <Directory /var/www/virtualenv-2.7>
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

WSGISocketPrefix /var/run/wsgi
WSGIPythonPath /var/www/virtualenv-2.7/mysite:var/www/virutalenv-2.7/lib/python2.7/site-packages
当I
服务httpd重新启动时,apache错误日志中会记录以下内容:

[Mon Jan 19 20:19:03 2015] [notice] caught SIGTERM, shutting down
[Mon Jan 19 20:19:04 2015] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Mon Jan 19 20:19:04 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jan 19 20:19:04 2015] [notice] Digest: generating secret for digest authentication ...
[Mon Jan 19 20:19:04 2015] [notice] Digest: done
[Mon Jan 19 20:19:04 2015] [notice] Apache/2.2.15 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.6 configured -- resuming normal operations

知道Django为什么不使用虚拟环境中的2.7吗?

mod_wsgi
模块是根据Python的系统版本编译的;线索在启动消息中:

                           mod_wsgi library version
                           vvvvvvvvvvvv
Apache/2.2.15 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.6 configured
                                        ^^^^^^^^^^^^
                                        Python version
要解决此问题,您可以根据需要的Python版本编译mod_wsgi,或者使用配置指令:

用于在初始化Python时向Python指示其库的位置 文件已安装。这应该在Python 可执行文件不在Apache运行的用户路径中,或 一个系统在不同的环境中安装了多个Python版本 文件系统中的位置,尤其是 相同的主/次版本,以及Apache找到的安装 在它的道路上不是理想的

此指令也可用于指示Python虚拟机 使用virtualenv等工具创建的环境,用于 整个mod_wsgi。

在Apache配置中,添加以下内容,然后重新加载服务器:

WSGIPythonHome /var/www/virtualenv-2.7/lib/python2.7

可能是因为您的
mod_wsgi
是根据系统Python编译的。检查Apache的错误日志以获取启动消息。我在/etc/httpd/conf/httpd.conf:WSGIPythonHome的第1023行添加了Apache error_log
Starting httpd:Syntax error的日志,该日志不能出现在[FAILED]节中
它仅在服务器级别受支持。修复了此问题,日志显示:
[注意]Apache/2.2.15(Unix)DAV/2 mod_wsgi/3.2 Python/2.6.6已配置--恢复正常操作[错误]mod_wsgi(pid=15153):无法导入“站点”模块。
这是因为您的源代码与虚拟环境卡在同一目录中;我只是在看了你的路之后才意识到。你不应该玩虚拟环境;它不是你应该放源代码的地方。无论如何,我用我希望是正确的路径编辑了答案。据我所知,我没有编辑任何内容,所以不确定你的意思。我更新了httpd.conf并重新启动,消息是相同的。
WSGIPythonHome /var/www/virtualenv-2.7/lib/python2.7