【发布时间】:2014-04-26 15:26:15
【问题描述】:
我发现无法为 python 2.7 重新编译 mod_wsgi。
我正在使用 Flask 和 Flask-WTF 构建应用程序。它作为独立的工作正常,但在 Apache 中中断,因为我的 Mac 上的 Apache 服务器使用 Python 2.6,即使默认情况下在 python 应用程序中安装和使用 2.7。单机版使用 2.7。
哪个 python 显示了这个:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
otool -L mod_wsgi.so 显示:
mod_wsgi.so:
/System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
于是我重新编译:
./configure with-python=/Library/Frameworks/Python.framework/Versions/2.7/bin/python
otool -L mod_wsgi.so 显示没有变化:
/System/Library/Frameworks/Python.framework/Versions/2.6/Python(兼容版本2.6.0,当前版本2.6.1)
重新启动后,Apache 仍在使用 2.6,这已通过 phpinfo() 和错误日志记录得到证实。来自 phpinfo() 的 Apache 详细信息如下:
Apache/2.2.22 (Unix) DAV/2 mod_wsgi/3.4 Python/2.6.1 PHP/5.3.15 mod_ssl/2.2.22 OpenSSL/0.9.8r
它正在使用在以下路径中找到的模块:/Library/Python/2.6/site-packages/。 /Library/Python 中没有 2.7 的目录。
我曾尝试在 httpd.conf 中摆弄 WSGIPythonHome 变量,但没有任何效果。
我还使用 disable-framework 命令编译了 mod_wsgi。这也没有解决问题。
我是否需要在我的 Apache 配置中进行更改以将其指向正确的 python 版本,或者我是否需要在我的 mod_wsgi 配置中添加一些额外的东西?将我正在使用的模块安装到 2.6 中不是一种选择。
我在 Mac OSX 10.6.8 上运行 Apache 2
谢谢。
这是完整的解决方案。
cd <mod_wsgi source directory>
make distclean
./configure --with-python=/Library/Frameworks/Python.framework/Versions/2.7/bin/python --disable-framework
sudo make install
【问题讨论】:
-
您是否安装了 Python 2.7 开发文件?
-
因为我不知道那些是什么,所以可能不是。我想我拥有我需要的一切。故障似乎是 --with-python 命令,显然在构建过程中被忽略了。
-
config.log 说什么?
-
config.log 中的所有 python 引用都指向 python 2.7。配置期间的输出还表明它正在查找当前版本。但是在制作过程中发生了一些事情,把事情搞砸了。
标签: python apache python-2.7 mod-wsgi