Не удается правильно установить Mercurial - ошибка PYTHONPATH

У меня есть сервер, работающий на 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)

Некоторое время я гуглил и нашел несколько сайтов с такой же проблемой, но до сих пор не знаю, как ее исправить, поскольку нигде не сказано, что мне нужно искать или что мне нужно добавить в свою 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 restall 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

6 ответов

Решение

Я не уверен в точной причине этого, но я обошел похожую проблему, установив Mercurial из исходного кода (хотя вы можете сначала удалить все пакеты Mercurial).

Загрузите архив Mercurial здесь и распакуйте его:

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

... это должно сделать это. Если у вас установлено несколько версий python (2.5, 2.6, 2.7), используйте последнюю версию.

У меня была точно такая же проблема, и это, как мне показалось, заставило ее работать (возможно, что-то еще было сделано, но я не могу сейчас вспомнить):

sudo apt-get install mercurial

sudo apt-get install --reinstall python-software-properties && sudo dpkg-reconfigure python-software-properties

Просто добавьте Mercurial lib Path в PYTHONPATH.

  1. Найдите библиотеки: locate mercurialи найдите Lib PATH. Например, /usr/lib64/python2.6/site-packages/mercurial;
  2. Добавьте путь Lib к PYTHONPATH: export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.6/site-packages,

Путь Lib может быть другим местом в вашей машине. И вы можете навсегда добавить предложение экспорта в ~/.bashrc или ~/.zshrc .

(Надеюсь, вы уже решили эту проблему, но я все равно попытаюсь дать несколько советов о том, как найти Mercurial.)

Во-первых: пожалуйста, приходите на IRC-канал, если у вас возникнут проблемы такого рода. Это гораздо лучше, чем пробовать что-то случайное, чтобы заставить его работать - установка вещей тут и там только сделает вас и вашу систему более запутанными:-)

Похоже, вы пробовали много разных вещей для установки Mercurial. Будьте очень осторожны, смешивая различные способы установки Mercurial (или любой другой программы Python, в этом отношении). Вторая ошибка, которую вы получаете, заключается в том, что вы запускаете одну версию Mercurial (версия 1.7.2) и она находит более старые библиотеки. Таким образом, вы, вероятно, уже получили две более или менее рабочие установки.

Поэтому мой совет - удалить пакет Ubuntu и удалить любые другие версии Mercurial. Поиск каталогов и файлов с именем mercurial и удалите их (но сначала удалите пакет, конечно).

Затем установите пакет - если версия в обычном репозитории Ubuntu слишком старая, используйте Mercurial PPA. Первая полученная ошибка означает, что Mercurial не может найти свои библиотеки (это, конечно, странно и неожиданно, когда вы устанавливаете Mercurial из пакета Ubuntu). Попробуйте запустить

$ python -c 'import mercurial; print mercurial'

чтобы увидеть, можете ли вы импортировать mercurial упаковать себя. Если это сработает, вы увидите, где находится пакет, и можете добавить родительский каталог в свой PYTHONPATH:

$ PYTHONPATH=/usr/lib/python2.7/dist-packages/ hg debuginstall

Если это не сработает, ищите commands.py, Это файл в Mercurial, и каталог его родителей должен быть на вашем PYTHONPATH,

Это должно заставить вас работать... но, опять же, не ожидается, что вам придется возиться с этим самостоятельно, когда вы устанавливаете Mercurial с помощью менеджера пакетов.

Нечто подобное произошло со мной в OS X, когда я дал системе Python первый приоритет над версией python, которую я установил вместе с Homebrew. Мне следовало бы добавить версию 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 прекратил выдавать эту ошибку.

Я тоже получал эту ошибку, и переустановка, удаление / установка не помогли. Оказалось, что в моей системе установлены Python2.3 и Python2.4. Он использовал Python2.4, но в Python2.3 были установлены ртутные библиотеки. Я скопировал ртутные библиотеки в Python2.4, и это устранило проблему. Вот команды, которые я использовал для копирования библиотек:

cd /usr/lib64/python2.4/site-packages sudo cp -r /usr/lib64/python2.3/site-packages/mercurial.

Другие вопросы по тегам