在CentOS上从Python2.4过渡到Python2.6。模块迁移问题

时间:2009-07-04 06:59:06

标签: python linux upgrade centos python-2.6

嘿伙计们,我有一个将python从2.4升级到2.6的问题:

我有CentOS 5(完整版)
它的python 2.4位于/usr/lib/python2.4/
其他模块位于/usr/lib/python2.4/site-packages /

我从/usr/local/lib/python2.6/的源代码构建了python 2.6
我已将默认python设置为python2.6
现在用于2.4的旧模块不在pythonpath中并且“丢失”
特别是,yum被打破(“没有名为yum的模块”)

那么将模块迁移/安装到python2.6的正确方法是什么?

4 个答案:

答案 0 :(得分:3)

它们没有损坏,它们根本就没有安装。解决方案是在2.6下安装它们。但首先我们应该看看你是否应该这样做......

是的,Python会在安装时将python命令替换为安装的版本(除非您使用--alt-install运行它)。你没有准确说明你的问题是什么,所以我猜。你的问题是许多使用Python的本地命令现在都失败了,因为它们是用Python 2.6执行的,而不是用Python 2.4执行的。这是对的吗?

如果是这样,那么只需删除/ usr / local / bin / python,并确保/ usr / bin / python是/usr/bin/python2.4的符号链接。然后你必须输入python2.6来运行python2,6,但那没关系。这是最好的方法。然后,您只需要在2.6。

中安装所需的软件包

但如果我的猜测错了,你真的需要在2.6下安装所有这些软件包,那么不要太担心。首先,安装setuptools。它包含一个easy_install脚本,然后您可以使用

安装模块
easy_install <modulename>

它将从pypi.python.org下载该模块并安装它。它还将安装任何依赖的模块。 easy_install可以安装任何使用distutils作为安装程序的模块,而不是很多。这将使安装90%的模块变得轻而易举。

如果模块有一个C组件,它将编译它,然后你也需要库头,这将是更多的工作,你可以做的就是安装标准的CentOS方式。

您不应在版本之间使用符号链接,因为库通常用于特定版本。对于2.4和2.6我认为.pyc文件兼容(但我不是100%肯定),所以这可能有用,但任何使用C 的模块都会中断。而其他版本的Python也会有不兼容的.pyc文件。而且我敢肯定,如果你这样做,大多数Python人都不会帮助你。 ; - )

一般来说,我也试着保持系统python“干净”,即。我没有安装任何没有安装包装工具的东西。相反,我使用virtualenv或buildout让每个应用程序都有自己的python路径,它的依赖关系存在。所以我拥有的每一个项目基本上都有自己的一套库。这样变得容易。

答案 1 :(得分:0)

有几种选择......

  1. 如果模块将在Python 2.6下运行,您只需创建从2.6 site-packages目录到2.4 site-packages目录的符号链接。

  2. 如果它们不能在2.6下运行,那么您可能需要针对2.6重新编译它们,或者安装它们的最新版本。在调用"python setup.py"

  3. 时,请确保使用2.6

    ...

    如果您遇到其他挑战,可能需要在serverfault.com上发布此内容。

答案 2 :(得分:0)

某些Python库仍然无法访问,因为Python 2.6 site-packages已更改为dist-packages

在这种情况下,唯一的方法是将网站包中生成的所有内容(例如make install)移动到dist-packages并创建sym-link。

答案 3 :(得分:0)

easy_install很好,但安装模块的方法很简单,只需:

  1. 将模块源解包到某个目录
  2. 输入“python setup.py install”
  3. 当然你应该用必需的安装python解释器版本来做这件事;检查它类型:

    python -V