Python

無法正確安裝 mercurial - PYTHONPATH 錯誤

  • June 30, 2016

我有一台在 Ubuntu 10.04 上執行的伺服器,我想通過它安裝 Mercurial

% sudo apt-get install mercurial

它似乎已成功安裝並且沒有顯示任何錯誤消息。但是當我嘗試它時,我得到:

% hg
abort: couldn't find mercurial libraries in [/usr/bin /usr/lib/python2.6 /usr/lib/python2.6/plat-linux2 /usr/lib/python2.6/lib-tk /usr/lib/python2.6/lib-old /usr/lib/python2.6/lib-dynload /usr/lib/python2.6/dist-packages /usr/lib/pymodules/python2.6 /usr/local/lib/python2.6/dist-packages]
(check your install and PYTHONPATH)

我已經用Google搜尋了一段時間,發現一些網站有同樣的問題,但我仍然不知道如何修復它,因為它沒有真正說明我需要尋找什麼或我需要添加到我的 PYTHONPATH 什麼……

順便說一句,現在我的 PYTHONPATH 似乎是空的:

% echo $PYTHONPATH

%

如果我在 /usr/lib/ 目錄中查找 mercurial,這就是我得到的:

% find /usr/lib/py* -name 'mercurial*'
/usr/lib/pymodules/python2.6/mercurial
/usr/lib/pymodules/python2.6/mercurial-1.4.3.egg-info
/usr/lib/pyshared/python2.6/mercurial

有人可以幫我嗎?我應該將 PYTHONPATH 設置為什麼(以及如何設置)?我已經嘗試過重新安裝,使用“easy_install mercurial”或“aptitude reinstall mercurial”安裝,但沒有任何幫助。我總是遇到同樣的錯誤。

如果有人可以提供幫助,那就太好了…謝謝!

添加:

從頭開始建構效果不佳……當我以 root 身份登錄時,我可以使用 hg,但是當我使用普通使用者訪問時,我得到:

% hg
Traceback (most recent call last):
 File "/usr/local/bin/hg", line 4, in <module>
   import pkg_resources
 File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2659, in <module>
   parse_requirements(__requires__), Environment()
 File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 546, in resolve
   raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: mercurial==1.7.2

我不確定確切的原因,但我通過從原始碼安裝 Mercurial 解決了類似的問題(不過,您可能想先刪除任何 Mercurial 包)。

在此處下載 Mercurial tarball並解壓縮:

 tar tvf mercurial-1.7.5.tar.gz
 cd mercurial-1.7.5
 python setup.py install

……應該這樣做。如果您安裝了多個版本的 python(2.5、2.6、2.7),請使用最新版本。

當我將系統 Python 優先於使用 Homebrew 安裝的 python 版本時,在 OS X 中發生了類似的事情。我應該將 Homebrew 版本添加到 PATH 而不是添加它。更多資訊請訪問https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python

所以在.bash_profile或類似的rc文件中,我改變了順序

PATH=/usr/local/share/python:"${PATH}"
PATH=/usr/local/bin:"${PATH}"

PATH=/usr/local/bin:"${PATH}"
PATH=/usr/local/share/python:"${PATH}"

然後 Mercurial 停止拋出該錯誤。

引用自:https://serverfault.com/questions/234718