Не удается правильно установить 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.
- Найдите библиотеки:
locate mercurial
и найдите Lib PATH. Например, /usr/lib64/python2.6/site-packages/mercurial; - Добавьте путь 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.