我有一个网站运行在apache-python 2(virtualenv)-flask stack上的Arch Linux服务器上。似乎wsgi应用程序没有从virtualenv中获取python,而是使用系统的python。
网站/test.py
import sys
print(sys.version)
结果:error_log
3.4.3 (default, Mar 25 2015, 17:13:50)
服务器上的缺省python为
$ python --version
Python 3.4.3
我打算使用的虚拟环境具有python 2
$ virtualenv -p /usr/bin/python2.7 flask
$ source flask/bin/activate
$ python --version
Python 2.7.10
虚拟主机Apache文件:/etc/httpd/配置文件/虚拟主机/msw.com
<VirtualHost *:80>
ServerName msw.com
ServerAlias www.msw.com
ServerAdmin webmaster@localhost
WSGIDaemonProcess msw user=live group=live threads=5 python-path=/home/live/msw/flask/lib/python2.7/site-packages
WSGIScriptAlias / /home/live/msw/msw.wsgi
<Directory /home/live/msw>
#Header set Access-Control-Allow-Origin "*"
WSGIScriptReloading On
WSGIProcessGroup msw
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
wsgi文件:/主页/实时/msw/msw.wsgi
import sys
activate_this = '/home/live/msw/flask/bin/activate_this.py'
#execfile(activate_this, dict(__file__=activate_this))
with open(activate_this) as f:
code = compile(f.read(), activate_this, 'exec')
exec(code, dict(__file__=activate_this))
sys.path.insert(0, '/home/live/msw/web')
sys.path.insert(0, '/home/live/msw')
from web import msw as application
为什么mod_wsgi没有拾取virtualenv的python?我做错了什么?
1条答案
按热度按时间xghobddn1#
我终于弄明白了。官方的arch-linux文档mod_wsgi有点混乱。它试图暗示mod_wsgi安装将适用于Python 2/3。然而,mod_wsgi最终仍然使用系统的Python3。我通过安装特定于Python 2的mod_wsgi2解决了这个问题。