Ошибка импорта Python при выполнении Mercurial

Моя система — RedHat 5 Linux, и по умолчанию установлен Python 2.4. Чтобы выполнить Mercurial1.81, я попытался обновить Python с 2.4 до 2.6 и сохранить его в другом каталоге.

Вот команды, которые я использовал:

find -xdev -samefile /usr/bin/python | xargs rm

Я пытался удалить жесткую ссылку, используемую для связи между python и python2.6. затем я использовал команды как:

 ln -s /usr/bin/python2.4 /usr/bin/python
 ln -s /usr/bin/python2.6 /usr/local/bin/python
 export PATH=/usr/local/bin:$PATH
 Change first line of hg to #!/usr/bin/env python
 PATHONHOME=/usr/lib/python2.6
 PATHONPATH=/usr/lib/python2.6 

Затем, когда я набрал «где питон», вот результаты.

python: /usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz

Затем, когда я набрал «какой питон», он указал на «usr/bin/python». Когда я набрал «python -V», он показал «python 2.4.3». Кажется, указывает на 2.4.3. Затем, когда я использовал команду

python -c "import sys; print '\n' .join(sys.path)"

это показало

   /usr/lib64/python24.zip
    /usr/lib64/python2.4
    /usr/lib64/python2.4/plat-linux2
    /usr/lib64/python2.4/lib-tk
    /usr/lib64/python2.4/lib-dynload
    /usr/lib64/python2.4/site-packages
    /usr/lib64/python2.4/site-packages/Numeric
    /usr/lib64/python2.4/site-packages/gtk-2.0
    /usr/lib/python2.4/site-packages

Я попытался найти пути python 2.6, набрав «find/-name python2.6», он показал

/usr/include/python2.6
/usr/lib/python2.6
/usr/lib64/python2.6

Вот мои вопросы:
(1) Как я могу изменить результаты замены из приведенной выше онлайн-страницы на python2.6?
(2) Почему я не могу найти каталог, такой как /usr/bin/python2 .6 или /usr/local/bin/python2.6? Означает ли это, что я установил свой python2.6 неправильно или случайно удалил каталог?
Что-то не так с результатами, которые я получил от тех команд, которые я ввел?
(3) Есть идеи, как заставить систему выполнять python2.6 когда я использовал «hg push»?
(4) Должен ли я снова установить python2.6 в /usr/local/bin?

Спасибо большое,


person Cassie    schedule 02.02.2012    source источник
comment
Вы пытались переустановить mercurial после установки python 2.6?   -  person Wooble    schedule 02.02.2012
comment
Нужно ли сначала удалить mercurial и переустановить его снова? Или я могу просто переустановить его, ничего не удаляя?   -  person Cassie    schedule 17.02.2012


Ответы (2)


Ваша установка mercurial находится в /usr/lib64/python2.4/site-packages/mercurial. Для этой конкретной установки потребуется Python 2.4. И первая строка /usr/bin/hg, вероятно, такова:

#!/usr/bin/python

Предполагая, что вы используете пакет из официальных репозиториев, Mercurial будет зависеть от версии Python по умолчанию 2.4. Так что возиться с /usr/bin/python не очень хорошая идея. Если вас это действительно беспокоит, вы можете easy_install один на своем новом Python 2.6.

person fayaz    schedule 04.02.2012
comment
Я согласен с fayaz, хотя я бы добавил, что, вероятно, происходит то, что новая версия mercurial, которая была установлена, использует команду из mercurial import... и из-за неправильной (для 2.6) переменной PYTHONHOME она находит (устарело от перспектива нового скрипта) 2.4 библиотеки mercurial. - person Tom B; 18.02.2012

Я бы предложил изменить /usr/bin/python обратно на системный Python 2.4, чтобы избежать дестабилизации вашей системы. Сделайте это, создав символическую ссылку на /usr/bin/python2.4, а затем добавив символическую ссылку /usr/local/bin/python на /usr/bin/python2.6.

Затем измените свой путь в rc-файле оболочки (например, ~/.bashrc), чтобы сначала найти локальный python (export PATH=/usr/local/bin:$PATH, если он еще не в таком порядке), затем отредактируйте первую строку /usr/bin/hg на #!/usr/bin/env python, чтобы он запускал это на по умолчанию в вашем пользовательском сеансе.

Если python все еще пытается загрузить неправильную версию библиотек python по какой-либо причине (2.4, когда вы запускаете двоичный файл python 2.6), вы можете изменить путь поиска, который исполняемый файл python будет использовать для поиска своего дома с помощью переменной среды PYTHONHOME. .

Однако, вероятно, лучше не изменять это для всей системы, поскольку в ОС может быть много скриптов Python, которые могут быть несовместимы с Python 2.6. Попробуйте добавить его в rc-файл оболочки.

Если по какой-либо причине PYTHONHOME этого не делает, вы можете напрямую отредактировать переменную среды PYTHONPATH (в вашем файле rc), к которой вы можете добавить пути к библиотеке python 2.6.

Я предлагаю отразить вывод python -c "import sys; print '\n'.join(sys.path)".

Эта однострочная строка должна показывать пути python 2.6 при запуске python 2.6, но если он по-прежнему показывает пути 2.4, вам нужно заменить пути, которые он показывает, правильными путями для python 2.6 (которые, вероятно, будут такими же, только с "6" вместо "4")

person Tom B    schedule 04.02.2012
comment
Извините за мое небольшое знание системы. Не могли бы вы объяснить больше? ‹br/› (1) Как добавить пути к библиотекам python2.6 в PYTHONPATH? Мне просто нужно ввести команду python -c import sys; print '\n' join(sys.path) (2) Как изменить /usr/bin/python обратно на систему 2.4? Я использовал команду rm python2.6 в каталоге /usr/bin/. Однако, когда я набрал python -V, он по-прежнему показывал python 2.6.5. Значит ли это, что я не правильно изменил его? (3) Как и в вашем ответе, где я должен добавить usr/local/bin/python? Спасибо большое - person Cassie; 17.02.2012
comment
Редактирование моего сообщения выше для ясности, извините. - person Tom B; 18.02.2012
comment
Привет, я попробовал несколько шагов и отредактировал свой вопрос. Вы имеете представление о проблеме? Спасибо большое, - person Cassie; 01.03.2012