У меня есть сервер на 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 переустановить 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 Вот и извлеките его:
tar tvf mercurial-1.7.5.tar.gz
cd mercurial-1.7.5
python setup.py install
... это должно сработать. Если у вас установлено несколько версий python (2.5, 2.6, 2.7), используйте последнюю.
Просто добавьте Mercurial lib Path в PYTHONPATH.
locate mercurial
, и найдите Lib PATH. Например. /usr/lib64/python2.6/site-packages/mercurial;export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.6/site-packages
.Путь Lib может быть другим местом на вашем компьютере. И вы можете навсегда добавить предложение экспорта в ~ / .bashrc или ~ / .zshrc.
У меня была точно такая же проблема, и это, казалось, заставило ее работать (может быть, что-то еще, что я сделал, но я не могу вспомнить сейчас):
sudo apt-get install mercurial
sudo apt-get install --reinstall python-software-properties && sudo dpkg-reconfigure python-software-properties
(Надеюсь, вы уже решили эту проблему, но я все равно попробую дать несколько советов о том, как найти 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, но библиотеки Mercurial были установлены в Python2.3. Я скопировал библиотеки Mercurial в Python2.4, и проблема устранилась. Вот команды, которые я использовал для копирования библиотек:
cd /usr/lib64/python2.4/site-packages sudo cp -r /usr/lib64/python2.3/site-packages/mercurial.