Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行Mercurial时Python导入错误_Python_Mercurial_Installation_Hardlink - Fatal编程技术网

执行Mercurial时Python导入错误

执行Mercurial时Python导入错误,python,mercurial,installation,hardlink,Python,Mercurial,Installation,Hardlink,我的系统是RedHat 5 Linux,安装了默认的python 2.4。为了执行Mercurial1.81,我尝试将python从2.4升级到2.6,并将其保存在不同的目录中 以下是我使用过的命令: find -xdev -samefile /usr/bin/python | xargs rm 我试图删除用于python和python2.6之间链接的硬链接。然后我使用命令作为: ln -s /usr/bin/python2.4 /usr/bin/python ln -s /usr/bin

我的系统是RedHat 5 Linux,安装了默认的python 2.4。为了执行Mercurial1.81,我尝试将python从2.4升级到2.6,并将其保存在不同的目录中

以下是我使用过的命令:

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 
然后,当我键入“Where is 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
然后当我键入“whichpython”时,它指向“usr/bin/python”,当我键入“python-V”时,它显示“python2.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
如图所示,我试图通过键入“find/-name python2.6”来找到python2.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吗


非常感谢,

我建议将
/usr/bin/python
更改回系统的python 2.4,以避免系统不稳定。为此,请将符号链接到
/usr/bin/python2.4
,然后将
/usr/local/bin/python
符号链接添加到
/usr/bin/python2.6

然后更改shell rc文件中的路径(例如~/.bashrc)以首先查找本地python(
export path=/usr/local/bin:$path
,如果尚未按该顺序),然后编辑
/usr/bin/hg
的第一行到
#/usr/bin/env-python
,以便默认情况下在用户会话中运行

如果python出于任何原因仍试图加载错误版本的python库(当运行2.6 python二进制文件时为2.4),则可以使用PYTHONHOME环境变量更改python可执行文件用于定位其主目录的搜索路径

不过,最好不要在整个系统范围内更改,因为操作系统中可能有很多python脚本,这些脚本可能与python 2.6不兼容。尝试将其添加到shell rc文件中

如果出于任何原因PYTHONHOME没有这样做,您可以直接编辑
PYTHONPATH
环境变量(在您的rc文件中),您可以向其中添加python2.6库路径

我建议镜像python-c“import sys;print'\n'.join(sys.path)”的输出


当运行Python2.6时,这一行程序应该显示Python2.6路径,但是如果它仍然显示2.4路径,您将希望用Python2.6的正确路径替换它显示的路径(可能是相同的,只是用“6”而不是“4”)

您的mercurial安装在
/usr/lib64/python2.4/site packages/mercurial
中。这种特殊的安装需要Python2.4。
/usr/bin/hg
的第一行可能是:

#!/usr/bin/python

假设您使用的是来自官方存储库的包,Mercurial将依赖于默认的Python版本2.4。因此,混用
/usr/bin/python
并不是一个好主意。如果它真的让您感到困扰,您可以在新的Python 2.6上安装一个。

您是否尝试在安装Python 2.6后重新安装mercurial?是否需要先删除mercurial,然后重新安装?或者我可以简单地重新安装它,而不首先删除任何内容?对不起,我对系统知之甚少。你能再解释一下吗
(1)如何将python2.6库路径添加到PYTHONPATH?我是否只需要键入命令“python-c”import sys;打印“\n”join(sys.path”)“(2)如何将/usr/bin/python更改回系统的2.4?我在/usr/bin/目录下使用了命令“rmpython2.6”。然而,当我键入“python-V”时,它仍然显示python2.6.5。这是否意味着我没有正确地更改它?(3) 在您的回答中,我应该在哪里添加“usr/local/bin/python”?非常感谢您为清晰起见删除我的上述信息,对不起。您好,我已经尝试了几个步骤并编辑了我的问题。你知道这个问题吗?非常感谢,我同意fayaz的观点,不过我要补充一点,可能正在发生的是安装的mercurial的新版本使用了“from mercurial import…”命令,并且由于一个不正确的(对于2.6)
PYTHONHOME
变量,它正在查找(从新脚本的角度来看已经过时)2.4 mercurial库。