1

Моя система - RedHat 5 Linux и по умолчанию установлен Python 2.4. Чтобы выполнить Mercurial 1.81, я попытался обновить python с 2.4 до 2.6 и подумал, что сохранил его в другом каталоге. Я поставил жесткую ссылку с Python 2.6 на Python. Теперь я удалил его и надеюсь, что Python вернется к Python 2.4 , чтобы избежать конфликта версий.

Вот команда, которую я использовал для удаления жесткой связи между python и python 2.6:

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

тогда я использовал команды как:

 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
 PYTHONHOME=/usr/lib/python2.6
 PYTHONPATH=/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

Затем, когда я набрал which python , он указал на 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. Как я могу изменить результаты замены с on-liner выше на python 2.6 ?
  2. Почему я не могу найти каталог, такой как /usr/bin/python2.6 или /usr/local/bin/python2.6 ? Означает ли это, что я установил свой python 2.6 неправильно или случайно удалил каталог? Что-то не так с результатами, которые я получил от тех команд, которые я ввел?
  3. Любая идея, как заставить систему выполнять Python 2.6, когда я использовал "hg push"?
  4. Должен ли я снова установить python 2.6 в /usr /local /bin?

1 ответ1

0
  1. Установите virtualenv и virtualenvwrapper (у меня сработал easy_install, но не забудьте добавить строку- source /usr/local/bin/virtualenvwrapper.sh в сценарий запуска оболочки, а затем введите сценарий запуска для использования оболочки)
  2. Запустите mkvirtualenv -p /usr/lib/python2.6 ENVNAME (где ENVNAME это то, что вы хотите назвать, может быть, hg?)
  3. Добавьте workon ENVNAME в скрипт инициализации оболочки (.profile,. * Shrc и т.д.)

Теперь ваша система все еще сможет использовать 2.4, а все ваши оболочки будут использовать 2.6. Будьте осторожны, так как это может привести к прерыванию вызовов к другим установленным системой приложениям, если их зависимости отсутствуют в вашей виртуальной среде. Но, так как теперь у вас есть пип, это должно быть легко pip install $WHATEVER_IS_MISSING (или выполнить команду deactivate , чтобы выйти из виртуальной среды, делать свое дело, и workon туда, где вы были).

Если вы найдете экземпляры hg, запущенные процессами вне оболочек (например, интеграцией файлового менеджера?) затем я рекомендую разместить этот небольшой скрипт на вашем пути и настроить эти процессы для его вызова.

#!/bin/bash # or whatever your shell is
workon ENVNAME
hg $*

(Обратите внимание, что вы можете отключить (ENVNAME) , установив VIRTUAL_ENV_DISABLE_PROMPT раньше в вашем скрипте инициализации, чем в workon строке)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .