嘿,伙计们,我有个问题要把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的正确方法是什么?
它们没有损坏,只是没有安装。解决方案是在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。它包含一个简单的安装脚本,然后您可以使用
它将从pypi.python.org下载并安装该模块。它还将安装任何依赖的模块。easy_install可以安装任何使用distutils作为安装程序的模块,但很少有人不安装。这将使安装这些模块的90%变得轻而易举。
如果这个模块有一个C组件,它会编译它,然后你也需要库头,这将是更多的工作,你所能做的就是用标准的CentOS方式安装它们。
不应该在版本之间使用符号链接,因为库通常用于特定版本。对于2.4和2.6,我认为.pyc文件是兼容的(但我不能百分之百确定),因此可以工作,但是任何使用C的模块都将中断。而其他版本的Python也会有不兼容的.pyc文件。我相信如果你这么做的话,大多数Python用户都不会帮你。;-)
一般来说,我也尽量让系统python保持“干净”,也就是说,我不会在那里安装任何没有与打包工具一起安装的东西。相反,我使用virtualenv或buildout让每个应用程序在其依赖关系所在的地方都有自己的python路径。所以我的每个项目基本上都有自己的库。这样就容易多了。
有几个选择。。。
如果模块将在Python2.6下运行,则只需创建指向模块的符号链接,从2.6 site packages目录指向2.4 site packages目录。
如果它们不能在2.6下运行,那么您可能需要针对2.6重新编译它们,或者安装它们的最新版本。只要确保在调用
时使用的是2.6"python setup.py"
。。。
如果遇到其他挑战,您可能需要在serverfault.com上发布此消息。
有些Python库可能仍然无法访问,因为Python 2.6
site-packages
已更改为dist-packages
。在这种情况下,唯一的方法是移动在站点包中生成的所有东西(例如通过
make install
)来分发包并创建一个sym链接。相关问题 更多 >
编程相关推荐