apache指向Ubuntu的python的错误版本我该如何改变?

我正在build立一个烧瓶应用程序和Ubuntu 12.04.3 LTS EC2实例,一切似乎都工作正常(即我可以通过公开可用的url到达网页),直到我试图导入一个模块(如numpy),并实现Apache的Python不同于我用来编译mod_wsgi和我正在使用的那个

我正在运行apache2。

apache2日志显示警告(特别是最后一行显示path没有改变):

[warn] mod_wsgi: Compiled for Python/2.7.5. [warn] mod_wsgi: Runtime using Python/2.7.3. [warn] mod_wsgi: Python module path '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib$ 

我试图在我的虚拟主机conf中设置path(我的python位于/ home / ubuntu / anaconda / bin以及所有其他库):

 WSGIPythonHome /home/ubuntu/anaconda WSGIPythonPath /home/ubuntu/anaconda <VirtualHost *:80> ServerName xx-xx-xxx-xxx-xxx.compute-1.amazonaws.com ServerAdmin [email protected] WSGIScriptAlias / /var/www/microblog/microblog.wsgi <Directory /var/www/microblog/app/> Order allow,deny Allow from all </Directory> Alias /static /var/www/microblog/app/static <Directory /var/www/FlaskApp/FlaskApp/static/> Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

但我仍然得到的警告和Apache的Pythonpath没有改变 – 我需要把相关的指令指向我的Python版本和模块(例如scipy,numpy等)的Apache?

另外,我可以避免使用虚拟环境吗?

提前致谢。

编辑#1:

我跑了:

 >>> import sys >>> print sys.prefix 

要得到:

 /home/ubuntu/anaconda 

用set / unset LD_LIBRARY_PATH运行ldd mod_wsgi.so会给出相同的符号链接

 libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f13ca1c1000) 

哪个是python的系统版本不是我想要的,而不是我运行时编译mod_wsgi的那个版本:

 ./configure --with-python=/home/ubuntu/anaconda/bin/python2.7 

修补程序级别修订的差异通常不重要,并在以下内容中进行了解释:

更重要的是当在mod_wsgi下运行脚本时,sys.prefix的值是多less。

以及mod_wsgi.so文件实际使用的是什么Python共享库,以及是否正确编译它以确保它将select备用共享库。

如果它确实没有select正确的共享库,那么不匹配可能是一个问题,你需要重新编译mod_wsgi。

仔细阅读文档并对您的安装进行检查,并根据需要采取相应的措施。