2012-02-02 62 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