我发现无法为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
答案 0 :(得分:1)
从源代码重建mod_wsgi,这次运行'configure'时添加选项'--disable-framework'。
当尝试链接到Python作为框架时,Snow Leopard的单独Python安装程序并不总是正常工作。因此,您需要禁用该链接样式,以便使用更传统的库链接。这应该导致otool显示它正在拾取正确的Python版本,然后在使用时应该没问题。
您无法使用WSGIPythonHome强制它使用其他版本。