我在将python从2.4升级到2.6时遇到了一个问题:
我有CentOS 5 (Full)。它的python2.4位于/usr/lib/python2.4/中。其他模块位于/usr/lib/python2.4/site-package/中。我从/usr/local/lib/python2.6/上的源代码构建了python2.6。我已经将默认python设置为python2.6。现在2.4的旧模块已经不在pythonpath中,并且已经“丢失”了。特别是,yum被破坏了(“没有名为yum的模块”)。
那么,将模块迁移/安装到python2.6的正确方法是什么呢?
发布于 2009-07-04 09:46:06
它们并没有损坏,只是没有安装而已。解决方案是将它们安装在2.6版本下。但首先我们应该看看你是否真的应该这么做...
是的,Python在安装时会将python命令替换为已安装的版本(除非您使用--alt-install运行它)。你没有确切地说出你的问题是什么,所以我来猜猜。您的问题是,许多使用Python的本地命令现在都失败了,因为它们在Python2.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脚本,然后可以使用以下命令安装模块
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路径,其中包含它的依赖项。因此,我的每个项目基本上都有自己的一组库。这样会变得更容易。
发布于 2009-07-04 07:04:44
有几个选择...
"python setup.py"时使用的是2.6版本
..。
如果你遇到其他挑战,你可能想把这篇文章发布到serverfault.com上。
发布于 2009-07-04 11:40:09
一些Python库可能仍然无法访问,因为在Python2.6中,site-packages被更改为dist-packages。
在这种情况下,唯一的方法是将站点包中生成的所有内容(例如由make install生成)移动到dist包中,并创建一个sym-link。
https://stackoverflow.com/questions/1081698
复制相似问题