【问题标题】:Why can't I install Python 2.7 under Centos 5.5?为什么我不能在 Centos 5.5 下安装 Python 2.7?
【发布时间】:2011-10-20 06:11:54
【问题描述】:

Centos 5.5 安装了 python 2.4,而我的项目需要 python 2.7。我下载了源代码,运行,删除,然后用几个替代版本再次尝试:

./configure && make && make install
./configure && make && make altinstall
./configure --prefix=/opt/python2.7 && make && make install 

我继续安装 setuptools 和 virtualenv(确保引用正确版本的 python,没有符号链接或其他任何奇怪的东西)。为项目构建了一个 virtualenv,为我的服务器正确配置了所有内容,我的最后一步是使用

从源代码为 apache 2.2.1 构建 mod_wsgi 3.3
./configure --with-apxs=/path/to/apxs --with-python=/path/to/py2.7 && make && make install

运行 python、在本地测试项目等所有 3 次都运行良好。

但是在安装 mod_wsgi 之后,我的 wsgi 应用程序不断收到愚蠢的导入错误(无法导入操作系统、系统、站点等)。

我在官方 focs https://code.google.com/p/modwsgi/wiki/InstallationIssues 中运行了页面中途描述的简短 sys.path 测试脚本,并在我的日志文件中得到以下输出:

sys.path = [ '/correct/path/to/virtualenv/py2.7/lib64/python2.4/', ... ]

从 code.google.com/p/modwsgi 的建议开始,我尝试了几种不同的 WSGIPythonHome 和 WSGIPythonPath ... 的所有变体

WSGIPythonHome=/path/to/virtualenv/ and ../bin/ and ../bin/python2.7,
WSGIPythonPath=../lib and ../lib/python2.7 and ../lib/python2.7/site-packages.  

WSGI 和 Apache 似乎不是这里的问题。这是我如何编译 python2.7 的错误,还是我的 easy_install 和 virtualenv 的配置方式可能有错误?

【问题讨论】:

    标签: python gcc virtualenv wsgi setuptools


    【解决方案1】:

    首先,您没有表明您已经使用 --enable-shared 编译了 Python。如果这不是该 Python 版本的默认设置,那是不可取的。根据:

    http://code.google.com/p/modwsgi/wiki/InstallationIssues#Lack_Of_Python_Shared_Library

    您可以检查 Python 是否安装了共享库。

    编译完 mod_wsgi,看看 mod_wsgi.so 是从哪里获取 libpython2.7.so 的。

    接下来,由于您多次尝试安装 Python,请确保您的系统中没有多个不同的 libpython2.7.so。你真的应该只有一个。

    如果 libpython2.7.so 不在标准库搜索路径中,则该目录的位置应在编译时嵌入到 mod_wsgi 中。如果安装在 /opt/python2.7 下,你会这样做:

    ./configure --with-python=/opt/python2.7/bin/python --with-apxs=/path/to/apxs
    LD_RUN_PATH=/opt/python2.7/lib make
    make install
    

    然后,您应该通过在命令行 Python 调用中运行来确定该 Python 安装的 sys.prefix 是什么。

    import sys
    print sys.prefix
    

    然后应该使用 WSGIPythonHome 设置它所说的值。它应该是该位置的 /opt/python2.7 。 WSGIPythonHome 仅是必需的,因为您已安装到系统范围 Python 的备用前缀。

    您不应将 Python 安装目录位置直接添加到 sys.path 或 WSGIPythonPath。

    使用 hello world WSGI 程序获得这么多的工作。没有虚拟环境,没有 Django 或更高级别的框架。

    请注意,运行 Apache 的用户必须能够读取 Python 安装。

    【讨论】:

    • 我认为 --enable-shared 是默认设置,但我会重复一遍以防万一并寻找 lipyton2.7.so 的。当我得到这个工作时,我会更新并接受今晚!
    • 格雷厄姆 - 谢谢。你搞定了。如果我需要猜测,我什至会说 mod_wsgi 尝试使用来自 python 2.4 的共享库,因为那些用于 python 2.7 的共享库不存在。那可能吗?有趣的是为什么我在 ubuntu 上从来没有遇到过这样的问题...
    • 它没有错误地使用共享库,而是选择了错误的 Python 主目录,即 sys.prefix。
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2011-03-25
    相关资源
    最近更新 更多