2012-02-02 4 views
2

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

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

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

Я пытался удалить жесткую связь используется для связи между питон и 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 

Тогда, когда я набрал «whereis python», вот результаты.

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/бен/питон» .Когда я напечатал «питон -V», он показал «питон 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, введя "найти/-name python2.6", он показал

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

Вот мои вопросы:
(1) Как я могу сменить замену результатов от on-liner выше на 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?

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

+2

Вы пытались переустановить меркурий после установки python 2.6? – geoffspear

+0

Нужно ли сначала удалить меркурий и снова установить его снова? Или я могу просто переустановить его, не удаляя ничего в первую очередь? – Cassie

ответ

1

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

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

Если python по-прежнему пытается загрузить неправильную версию библиотек python по какой-либо причине (2.4, когда вы используете двоичный файл 2.6 python), вы можете изменить путь поиска, который будет использовать исполняемый файл 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»)

+0

Извините за мое знание системы. Не могли бы вы объяснить больше?
(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»? Большое спасибо – Cassie

+0

Редактирование моего выше сообщения для наглядности, извините. –

+0

Привет, я пробовал несколько шагов и редактировал мой вопрос. Есть ли у вас какое-либо представление о проблеме? Большое спасибо, – Cassie

1

Ваш меркурийный монтаж находится в /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.

+1

Я согласен с fayaz, хотя я бы добавил, что, вероятно, это новая версия Mercurial, которая была установлена, использует команду «from mercurial import ...» и из-за неправильного (для 2.6) 'PYTHONHOME 'variable, это поиск (устаревший с точки зрения нового скрипта) 2.4 меркуриальных библиотек. –

Смежные вопросы