我正在尝试在 Mac OS X 10.6 上使用非默认 python 安装在 Apache 2.2.14 下运行 mod_wsgi 3.1。
下载 mod_wsgi 源代码后,我运行:
sudo apachectl -k stop
然后
./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python
make
sudo make install
然后我再次启动apache
sudo apachectl -k start
当我 cat /var/log/httpd/error_log 我看到:
[2009 年 12 月 21 日星期一 12:27:26] [警告] mod_wsgi:为 Python/2.6.4 编译。
[2009 年 12 月 21 日星期一 12:27:26] [警告] mod_wsgi:运行时使用 Python/2.6.1。
[Mon Dec 21 12:27:26 2009] [notice] Apache/2.2.14 (Unix) DAV/2 mod_wsgi/3.1 Python/2.6.1 已配置 -- 恢复正常操作
当我运行 otool -L mod_wsgi.so 时看到:
mod_wsgi.so:
/System/Library/Frameworks/Python.framework/Versions/2.6/Python(兼容版本2.6.0,当前版本2.6.1)
/usr/lib/libSystem.B.dylib(兼容版本 1.0.0,当前版本 125.0.0)
是什么赋予了?为什么要和系统框架挂钩?
这是我的 mod_wsgi 配置和构建命令的输出:
阿基米德:mod_wsgi-3.1 awolf$ ./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python
检查 apxs2... 否
检查 apxs... /opt/apache2/bin/apxs
检查 Apache 版本... 2.2.14
配置:创建 ./config.status
config.status:创建 Makefile
阿基米德:mod_wsgi-3.1 awolf$ make
/opt/apache2/bin/apxs -c -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -Wc,'-arch x86_64' mod_wsgi.c -L/usr/local/ Cellar/python/2.6.4/lib -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl /Library/Webserver/build/libtool --静音 --mode=compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I/opt/apache2/include -I/opt/apache2/include -I/opt/apache2/include - arch x86_64 -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
在 /usr/local/Cellar/python/2.6.4/include/python2.6/Python.h:125 包含的文件中,
from mod_wsgi.c:135:
/usr/local/Cellar/python/2.6.4/include/python2.6/modsupport.h:27:警告:'PyArg_ParseTuple' 是无法识别的格式函数类型 /Library/Webserver/build/libtool --silent --mode =link gcc -o mod_wsgi.la -rpath /opt/apache2/modules -module -avoid-version mod_wsgi.lo -L/usr/local/Cellar/python/2.6.4/lib -L/usr/local/Cellar/ python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl
阿基米德:mod_wsgi-3.1 awolf$ sudo make install
密码:
/opt/apache2/bin/apxs -i -S LIBEXECDIR=/opt/apache2/modules -n 'mod_wsgi' mod_wsgi.la
/Library/Webserver/build/instdso.sh SH_LIBTOOL='/Library/Webserver/build/libtool' mod_wsgi.la /opt/apache2/modules
/Library/Webserver/build/libtool --mode=install cp mod_wsgi.la /opt/apache2/modules/
cp .libs/mod_wsgi.so /opt/apache2/modules/mod_wsgi.so
cp .libs/mod_wsgi.lai /opt/apache2/modules/mod_wsgi.la
cp .libs/mod_wsgi.a /opt/apache2/modules/mod_wsgi.a
chmod 644 /opt/apache2/modules/mod_wsgi.a
ranlib /opt/apache2/modules/mod_wsgi.a