我有一个安装有 Centos 5.5 的 VPS,安装了 Python 2.6在 CentOS 5(cPanel)上安装 Python 2.5、mod_wsgi 和 Django 1.0教程和 Mercurial 1.6 通过 easy-install 进行安装。
现在我想更新到 Mercurial 1.7.5,所以我轻松安装了它,它似乎可以工作。至少从终端使用时是这样。
我一直使用hgwebdir
HTTP 来推送/拉取我的存储库。但是,当我尝试查看使用 new hg
(1.7.5) 创建的存储库时,我得到了 500 错误页面。查看 Apache 时,error_log
会读到一些关于 dotencode 支持的内容
RepoError: requirement 'dotencode' not supported,
谷歌表示,这是一个当旧版本hg
尝试读取用新版本创建的存储库时出现问题hg
。
我如何才能找出hg
Apache/ 使用了哪个mod_wsgi
?以及如何更新它?
答案1
需要澄清的是,听起来您使用的是针对 Python 2.5(具有旧版本的 hg)编译的 mod_wsgi。您现在正尝试使用 Python 2.6(具有 hg 1.7.5)运行 mod_wsgi。
假设您按照链接的文章中的说明进行操作,您会注意到您根据 Python 2.5 中的源代码编译了 mod_wsgi。mod_wsgi 不会启动 Python 解释器;相反,它直接调用 Python 源代码。因此,如果您希望 mod_wsgi 与 Python 2.6 一起使用,则必须使用 Python 2.6 源代码重新编译它。
您可以按照本文中的相同步骤操作,但要使用 Python 2.6 的源代码,而不是 Python 2.5。我之前曾针对 Python 2.6 编译过 mod_wsgi,本文看起来非常准确。
希望这会有所帮助,如果您遇到任何问题,请务必发表评论。
答案2
对我来说,这听起来像是以下两件事之一:
安装新版本的 Mercurial 后,您需要重新启动 Web 服务器。使用 时
mod_wsgi
,Apache 会在内存中保留一份正在运行的脚本副本,以便快速处理新请求。因此,内存中可能仍有 Mercurial 1.6 在运行。重新启动 Apache 应该会有所帮助。您在机器上安装了多个版本的 Mercurial。尝试搜索
commands.py
并查看是否找到多个版本。然后删除旧版本并按照 Redmumba 的建议重新安装。