Fedora Python升级导致easy_install失效
Fedora Core 9自带Python 2.5.1。我可以用YUM来获取最新的版本。
为了准备2.6的官方测试,我想先用2.5.4。不过,似乎没有Fedora 9的YUM包,因为2.5.4并不是FC9的官方版本。
我下载了2.5.4,执行了./configure; make; make install
,结果得到了两个Python版本。一个是官方的2.5.1(在/usr/bin
),另一个是新的2.5.4(在/usr/local/bin
)。
我的技术栈没有安装在/usr/local/lib/python2.5
里。
看起来我有几种选择可以继续。有没有人有好的建议?
把
/usr/lib/python2.5/*
复制到/usr/local/lib/python2.5
,这样可以复制我的环境。这应该没问题,除非某些Python库在安装时把/usr/bin/python
写死了。这种方法简单,但有没有什么缺点呢?通过运行
easy_install
重新安装所有东西。不过,easy_install
(目前)是固定指向/usr/bin/python
的。所以,我得先修复easy_install
,然后再重新安装所有东西。这需要一些时间,但能让我有一个干净、最新的环境。不过,这样做有没有什么缺点呢?[为什么
easy_install
会固定自己?]把
/usr/bin/python
重新链接到/usr/local/bin/python
。我还是得复制或重新安装库,所以我觉得这对我没什么好处。[这样可以让easy_install
正常工作;但编辑/usr/bin/easy_install
也能做到。]
有没有人复制过他们的库?这真那么简单吗?
还是说我应该修复easy_install
,然后按照安装指南一步步来,建立一个新的、干净的、最新的环境?
编辑
或者,我应该
- 跳过解决2.5.1和2.5.4的问题,直接升级到2.6吗?
3 个回答
我在安装Python 2.5的时候也遇到过类似的问题,那时我用的是一个比较老的Ubuntu版本,系统自带的是2.4。
我最开始尝试修补一下easy_install
,但是这样做导致了很多问题,尤其是那些想要使用系统自带Python的程序。我经常需要调整工具链来解决每次安装时可能出现的不同错误。通过apt安装任何Python软件,或者安装任何带有Python easy_install
脚本的软件,常常让我哭笑不得。我知道我可能可以更仔细地修补easy_install
,但最后我放弃了。
后来,我选择直接复制库文件,这样一切就正常工作了。正如你所说,可能会有一些问题,具体取决于你安装了什么,但我没有遇到麻烦。我仔细检查了Python的site.py
模块,发现它完全依赖相对路径,并动态生成绝对路径;这让我对“复制所有东西”的做法有了些信心。我又检查了一下.pth
文件,然后就开始动手了。
我建议你创建一个虚拟环境(或者多个)来安装软件包。
通常情况下,你的电脑上只会安装一个版本的Python。因为2.5.1和2.5.4是同一个版本系列的,所以把你的库文件复制过去应该没问题。不过,你需要注意的是,现在你的路径中有/usr/bin/python和/usr/local/bin/python,这可能会让一些工具搞混淆。
如果你需要同时安装这两个小版本,我建议你把2.5.4完全放在路径之外,或者让它完全覆盖掉另一个版本(不过这样做有风险哦;)如果你选择前者,你还可以通过设置PYTHONPATH环境变量来让2.5.4指向你的site-packages目录。
Ubuntu的处理方式不同,这里是如何处理不同主要版本的方法。Python的可执行文件会在版本后面加上版本号:
/usr/bin/python -> python2.6
/usr/bin/python2.5
/usr/bin/python2.6
每个版本都有自己的/usr/lib/python2.X目录,里面存放着所有模块的版本。
最后,你还可以通过修改你的site.py来进一步自定义你的设置。