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

2024-04-25 13:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,伙计们,我有个问题要把python从2.4升级到2.6:

我有CentOS 5(满)
它将python2.4放在/usr/lib/python2.4中/
其他模块位于/usr/lib/python2.4/site-packages/

我从/usr/local/lib/python2.6的源代码构建了python2.6/
我已将默认python设置为python2.6
现在,2.4的旧模块已超出pythonpath并“丢失”
特别是,yum已损坏(“没有名为yum的模块”)

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


Tags: 模块方法源代码libpackagesusrlocalsite
2条回答

它们没有损坏,只是没有安装。解决方案是在2.6下安装它们。但首先我们应该看看你是否真的应该这么做。。。

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

如果是这样,那么只需删除/usr/local/bin/python,并确保/usr/bin/python是指向/usr/bin/python2.4的符号链接。然后你必须输入python2.6才能运行python2,6,但这没关系。这是最好的办法。然后您只需要安装2.6中需要的软件包。

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

easy_install <modulename>

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

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

不应该在版本之间使用符号链接,因为库通常用于特定版本。对于2.4和2.6,我认为.pyc文件是兼容的(但我不能百分之百确定),因此可以工作,但是任何使用C的模块都将中断。而其他版本的Python也会有不兼容的.pyc文件。我相信如果你这么做的话,大多数Python用户都不会帮你。;-)

一般来说,我也尽量让系统python保持“干净”,也就是说,我不会在那里安装任何没有与打包工具一起安装的东西。相反,我使用virtualenv或buildout让每个应用程序在其依赖关系所在的地方都有自己的python路径。所以我的每个项目基本上都有自己的库。这样就容易多了。

有几个选择。。。

  1. 如果模块将在Python2.6下运行,则只需创建指向模块的符号链接,从2.6 site packages目录指向2.4 site packages目录。

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

    时使用的是2.6

。。。

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

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

在这种情况下,唯一的方法是移动在站点包中生成的所有东西(例如通过make install)来分发包并创建一个sym链接。

相关问题 更多 >