如何让 Apache 运行 2.7 而不是 2.5?
我正在配置 Apache 以将 mod_wsgi 与 Django 和 Python 2.7 一起使用,但错误日志显示 Apache 正在使用 Python 2.5.2 并且找不到 django.core.handlers.wsgi。
该模块可供 python 和 django shell 使用,每个都运行 2.7,所以我认为问题出在 Apache 的 python 版本上。
我从源代码安装了 Python 2.7.1(在 Debian 系统上),并将符号链接 /usr/bin/python 更改为指向 /usr/local/bin/python2.7,其中“make install”放置了二进制文件。python 和 django shell 都启动了 2.7.1(它们可以导入 wsgi 模块)。
可能相关——当我将符号链接移回以前的版本(某些安装需要 apt-get 时),python shell 仍然显示 2.7.1。Django 没有。我在安装过程中遗漏了什么吗?
更新:这——https://stackoverflow.com/questions/4186099/django-running-wrong-version——表明问题可能在于 mod_wsgi 或 mod_python 是为 Python 2.5 构建的。
我尝试从源代码构建 mod_wsgi,但该过程找不到 apxs,并且安装 libapache2-dev(如 mod_wsgi 网站所建议)的努力因无法卸载的依赖项而失败。如果不将 Python 指向 debian 默认版本 2.5,我无法通过 apt-get 安装 mod_wsgi 或 mod_python。不知道如何解决这里的问题。
更新 2:选择将 Python 回滚到 2.5。
我推测 Apache 正在转向 Python 2.5,因为它在 mods-enabled 中找到了与 Python 2.5 相对应的 mod_wsgi.so-2.5。mod_wsgi 的编译可能将 .so-2.7 模块放在那里,但这需要 apache2-dev,而 Debian 软件包因缺少依赖项问题而中断,回滚判断了大部分的勇气,没有人会关心这一点或这个连续的回顾,但是如果亲爱的读者,一些 python2.7 + apache 毛球把你带到这里,这些时间伤痕的注释让你省去片刻时间,为我举杯。精益求精!晚安。
最后更新:apache2-dev 问题已通过 aptitude 而不是 apt-get 安装得到解决。
答案1
您需要 Python 2.7 真的有原因吗?Django 可以安装 2.5 版本,Debian 软件包将保留适用于 Python 2.5 的安全相关补丁。为什么不保留 Debian 存储库中的所有库存,并安装 2.5 版本的 Django?这将为您节省大量从源代码编译东西的时间,使安装更容易,它还将使升级和维护更加简单,并且将来不太可能出现故障。——
Christopher Karel
答案2
/usr/bin/python 是唯一的“可执行文件”吗?
什么是
ls -l /usr/bin/python*
表演?还有
ls -l /usr/bin/X11/python*
和
type -a python
?