虚拟环境中的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_logStarting 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