【问题标题】:Apache using Python 2.4, Python 2.5 scripts failingApache 使用 Python 2.4,Python 2.5 脚本失败
【发布时间】:2010-03-04 03:55:44
【问题描述】:

使用 CentOS5,我为 Apache 配置了以下指令。

Alias /pscript/ /var/www/pscript/
<Directory "/var/www/pscript/">
    Options +ExecCGI
    DirectoryIndex thetest.py
    AddHandler cgi-script .py
</Directory>

当我调用 www.domain.com/pscript/ 时,我的 python 脚本运行并打印出我的sys.path,它显示的是python2.4

当我调用需要 Python 2.5 的不同脚本时,我收到 500 内部服务器错误。

查看我的 Apache error_log,我看到以下行:

[Wed Mar 03 16:58:44 2010] [error] [client 000.000.000.000] Please use Python 2.5 or greater

从命令行,运行python -V 返回Python 2.5.5。我安装了 2.4 和 2.5.5,但应该只使用 2.5.5。

为了解决 Apache 的问题,我重新编译了 Python 2.5.5 以确保安全,并确保启用共享库。然后我重新编译了 mod_python 以防影响某些东西,但我的 sys.path 仍然是 python2.4

我想知道,我需要重新编译 Apache 2.2.3 本身吗?我只需要 Apache 来使用 Python 2.5.5。

提前致谢。

【问题讨论】:

    标签: python apache


    【解决方案1】:

    Python 脚本的第一行是否类似于:

    #!/usr/bin/python
    

    如果是这样,/usr/bin/python 可能是 Python 2.4 版,而直接从命令行运行 python 会从路径中的其他位置运行不同的 Python 可执行文件(2.5 版)。试试:

    which python
    

    查看从命令行运行python 时正在运行的可执行文件。

    【讨论】:

    • 从命令行我得到 /usr/local/bin/python,这是 Python 2.5.5 的安装。
    • 您的 Python 脚本顶部是否有 #!/usr/local/bin/python 或其他内容?
    • 就是这样。该脚本正在调用 /usr/bin/env 来调用 python。一定是叫错了。我已将我的脚本更新为#!/usr/local/bin/python 并打印我的sys.path 现在显示它正在使用正确的版本。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2016-12-30
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多