2012-02-02 60 views
2

我的系统是RedHat 5 Linux,并安装了默认的python 2.4。为了执行Mercurial1.81,我试图将Python从2.4升级到2.6并将其保存在不同的目录中。执行Mercurial时出现Python导入错误

这里是我曾经用过的命令:

find -xdev -samefile /usr/bin/python | xargs rm 

我试图消除使用Python和python2.6的之间链接的硬链接。然后我使用命令为:

ln -s /usr/bin/python2.4 /usr/bin/python 
ln -s /usr/bin/python2.6 /usr/local/bin/python 
export PATH=/usr/local/bin:$PATH 
Change first line of hg to #!/usr/bin/env python 
PATHONHOME=/usr/lib/python2.6 
PATHONPATH=/usr/lib/python2.6 

然后,当我键入“whereis python”,这里是结果。

python: /usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz 

然后当我键入 “这蟒”,它指出, “USR /斌/ Python的”。当我键入 “蟒蛇-V”,这表明 “蟒蛇2.4.3”。它似乎指向2.4.3。然后,当我用命令

python -c "import sys; print '\n' .join(sys.path)" 

它表明

/usr/lib64/python24.zip 
    /usr/lib64/python2.4 
    /usr/lib64/python2.4/plat-linux2 
    /usr/lib64/python2.4/lib-tk 
    /usr/lib64/python2.4/lib-dynload 
    /usr/lib64/python2.4/site-packages 
    /usr/lib64/python2.4/site-packages/Numeric 
    /usr/lib64/python2.4/site-packages/gtk-2.0 
    /usr/lib/python2.4/site-packages 

我试图通过键入 “发现/ -name python2.6的” 找到蟒2.6的路径,这表明

/usr/include/python2.6 
/usr/lib/python2.6 
/usr/lib64/python2.6 

这里是我的问题:
(1)我怎样才能改变结果从上面的衬垫到python2.6?
(2)为什么找不到像/usr/bin/python2.6或/usr/local/bin/python2.6这样的目录? 这是否意味着我安装了我的python2.6错误或意外删除了目录?
从我输入的命令中得到的结果有什么不对吗? (3)当我使用“hg push”时,有什么想法让系统执行python2.6?
(4)我应该再次在/ usr/local/bin安装python2.6吗?

非常感谢你,

+2

您是否尝试过在安装python 2.6后重新安装mercurial? – geoffspear 2012-02-02 18:56:31

+0

我需要先删除mercurial并重新安装吗?或者我可以简单地重新安装它,而不是先删除任何东西? – Cassie 2012-02-16 22:10:41

回答

1

我建议改变/usr/bin/python回到系统的Python 2.4,以避免破坏稳定的系统。通过符合链接到/usr/bin/python2.4,然后将/usr/local/bin/python符号链接添加到/usr/bin/python2.6

然后改变你的路径在shell的rc文件(〜例如/ .bashrc)中先找到当地的蟒蛇(​​如果它是不是已经按顺序),然​​后修改/usr/bin/hg的第一行#!/usr/bin/env python使它会在用户会话中默认运行。

如果由于某种原因(2.4运行2.6 python二进制文件)python仍然尝试加载错误版本的python库,可以更改python可执行文件用于查找其home的搜索路径PYTHONHOME环境变量。

但是,最好不要改变这个系统范围,因为可能会有很多python脚本进入操作系统,这可能与Python 2.6不兼容。尝试将其添加到您的shell rc文件。

如果无论出于何种原因PYTHONHOME不这么做,您可以直接编辑0​​环境变量(在您的rc文件中),您可以向其中添加Python 2.6库路径。我建议镜像输出python -c "import sys; print '\n'.join(sys.path)"

这个一行代码应该在运行python 2.6时显示python 2.6路径,但是如果它仍然显示2.4路径,你需要用python 2.6的正确路径替换它显示的路径(这可能是相同,只有“6”而不是“4”)

+0

对不起我的小系统知识。你能解释更多吗?
(1)如何将python2.6库路径添加到PYTHONPATH?我只需要输入命令“python -c”import sys; print'\ n'join(sys.path“)”(2)如何将/ usr/bin/python更改回系统2.4?我在/ usr/bin /目录下使用了命令“rm python2.6”。但是,当我输入“python -V”时,它仍然显示python 2.6.5。这是否意味着我没有正确更改它? (3)在你的回应中,我应该在哪里添加“usr/local/bin/python”?非常感谢你 – Cassie 2012-02-16 22:08:05

+0

编辑我的上述信息清晰,对不起。 – 2012-02-18 17:50:04

+0

嗨,我已经尝试了几个步骤,并编辑了我的问题。你对这个问题有什么想法吗?非常感谢, – Cassie 2012-02-29 21:51:42

1

您的mercure安装位于/usr/lib64/python2.4/site-packages/mercurial。该特定的安装需要Python 2.4。和/usr/bin/hg第一线大概是:

#!/usr/bin/python 

假设你正在使用一个包从官方仓库,水银将取决于默认的Python是准确2.4版本。所以,与/usr/bin/python混合并不是一个好主意。如果它真的困扰你,你可以在你的新Python 2.6上使用easy_install

+1

我同意fayaz,但我会补充说可能发生的是安装的新版本mercurial使用命令“from mercurial import ...”,并且由于错误的(for 2.6)PYTHONHOME '变量,它发现(从新脚本的角度来看)2.4汞文库。 – 2012-02-18 18:08:38