我已经使用以下命令编译了 python 2.7.8:
mkdir -p /usr/local/python2p7/lib
./configure --prefix=/usr/local/python2p7 --with-threads --enable-shared LDFLAGS="-Wl,-rpath /usr/local/python2p7/lib"
make
make install altinstall
我正在使用 LDFLAGS,因此此安装不会与内置有 python 2.7.5 的 CentOS 7 冲突。
我编译的modwsgi 4.2.6:
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/python2p7/bin/python LDFLAGS="-L/usr/local/python2p7/lib"
make
make install
如果我运行:
ldd /usr/local/apache/modules/mod_wsgi.so
我明白了
...
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f648d9a0000)
...
如何让 mod wsgi 使用 /usr/local/python2p7/lib/libpython2.7.so.1.0?
*******解决方案*******
在 Graham Dumpleton 的帮助下:
要编译 modwsgi:
export LD_RUN_PATH=/usr/local/python2p7/lib
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/python2p7/bin/python
make
make install
unset LD_RUN_PATH
在 apache 配置集中
WSGIPythonHome /usr/local/python2p7
我最初将其设置为“/usr/local/python2p7/bin”并出现“ImportError:没有名为 site 的模块”错误。
答案1
mod_wsgi 文档中介绍了这一点。请参阅:
在编译 mod_wsgi 时,您需要将 LD_RUN_PATH 环境变量设置为适当的库目录,以确保它使用正确的 Python 共享库。
另请阅读:
以防在运行时它仍然会拾取错误的运行时文件。在这种情况下,您还需要设置 WSGIPythonHome。
就从源代码编译而言,另一个原因是 CentOS 仍然附带旧的 mod_wsgi。
您甚至可以考虑使用 pip 安装的 mod_wsgi 来代替现在正在做的事情。请参阅: