Tech notes

Daily notes about my IT activities.

2011-08-04

Смена версии Python по умолчанию

by hackprime

Не всегда между старшей и младшей версиями какого-либо программного продукта есть обратная совместимость. Если под одной версией работает нормально, то под другой может и не заработать вовсе.

С подобной проблемой я как раз и столкнулся. Django для своей работы требовал Python 2.6, однако в ubuntu по умолчанию стоит Python 2.7. Казалось бы, ничего сложного, доствь 2.6 и всё ок. Но нет. Даже поставив рядом 2.6 Django всё равно брал версию, которая стоит по умолчанию, т.е. 2.7. Выход из данной ситуации простой — понизить версию питона ручками. Итак, поехали:

1) Открываем с правами рута файл /usr/share/python/debian_defaults и меняем версию по умолчанию на python2.6.

2) Далее, в директории /usr/bin/ ищем файл python и переименовываем его:

$ sudo mv /usr/bin/python /usr/bin/python27

Примечание: именно переименовываем, а не удаляем, т.к. в будущем он может пригодиться.

3) В той же директории создаём символьную ссылку на исполняемый файл Python 2.6 с именем python (как изначально и было).

$ sudo ln -s /usr/bin/python2.6 /usr/bin/python

4) Перезагружаемся.

Теперь по умолчанию используется Python 2.6.

PS:

После понижения версии Python могут перестать работать некоторые приложения (например у меня после понижения отказался работать установщик проприетарных драйверов Jockey), которые настроены так, чтобы использовать версию Python по умолчанию, и если версия python по умолчанию их не удовлетворяет — они не работают. Лечится это тем же способом, но только наоборот. Поэму неиспользуемые символьные ссылки на python лучше не удалять. И ещё: при понижении версии, все модули, поставленные через PIP, придётся устанавливать заново.

Источники:

Change the default python version in ubuntu