Назад | Перейти на главную страницу

Не удается правильно установить 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 переустановить 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.

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