сменить версию питона

История: Одно из моих приложений работает на Python 2.4, а другое — на 2.6. Я попытался сделать символическую ссылку python2.4 на python, и в Ubuntu все начало ломаться. Теперь я загружаю каждую зависимость 2.4 и устанавливаю ее с помощью установки python2.4 setup.py. Зависимости кажутся бесконечными.

Вопрос 1: Как я скажу какой-либо структуре, которая использует такую-то версию pf python, например day django, использовать 2.6, а mjango использовать 2.4? Что-то вроде того, что мы говорим, используйте синтаксис базы данных имя_базы_данных.

Вопрос 2: Есть ли более элегантный способ переключения между версиями, поскольку мой взлом символических ссылок был настоящей катастрофой?

Вопрос 3: Могу ли я загрузить деб для Харди и заставить ее поверить, что это для нее?


person dhaval    schedule 10.07.2009    source источник


Ответы (7)


Используйте Virtualenv.

Дополнительную информацию можно найти здесь: Работа с virtualenv.

Используя virtualenv, вы можете создать новую виртуальную среду Python с любой версией Python, которую вы хотите использовать для каждого проекта или приложения. Затем вы можете активировать соответствующую среду, когда вам это нужно.

Чтобы расширить свой ответ:

Вы можете установить несколько версий Python на свой компьютер (у меня на машине 2.4, 2.5, 2.6 и 3.1 — я устанавливаю каждую из исходников). Я использую Mac и сохраняю свой системный Python в качестве того, что OS X устанавливает по умолчанию.

Я использую easy_install для установки пакетов. В Ubuntu вы можете получить easy_install следующим образом:

sudo apt-get install python-setuptools

Чтобы установить virtualenv, выполните:

easy_install virtualenv

Я обычно создаю новую виртуальную среду для каждого проекта, над которым работаю, и не даю ему доступ к глобальным пакетам сайта. Это удерживает все пакеты вместе и позволяет мне иметь конкретные версии всего, что мне нужно.

virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT

И затем всякий раз, когда я делаю что-либо, связанное с этим проектом, я активирую его:

source ~/env/NEW_DJANGO_PROJECT/bin/activate

Если я сейчас запускаю python, он использует этот новый python. Если я использую easy_install, он устанавливает вещи в мою новую виртуальную среду.

Таким образом, virtualenv должен решить все ваши проблемы.

person DisplacedAussie    schedule 10.07.2009
comment
Команда активации имеет косую черту между bin и активировать: source ~/env/NEW_DJANGO_PROJECT/bin/activate - person Gene Gotimer; 15.10.2010

Pythonbrew — волшебный инструмент. Который также можно назвать менеджером версий Python, похожим на менеджер версий RVM-Ruby, но Pythonbrew вдохновлен Perlbrew.

Pythonbrew — это программа для автоматизации сборки и установки Python в пользовательской папке $HOME.

 Dependencies – curl

Перед установкой Pythonbrew установите «curl» на машину, чтобы установить curl, используйте приведенную ниже команду в терминале, введите пароль для пользователя при появлении запроса.

 $sudo apt-get install curl

После установки curl, теперь установите Pythonbrew, скопируйте и вставьте следующие команды в терминал и введите пароль пользователя при появлении запроса.

Рекомендуемый способ установки - Easy Install

 $ sudo easy_install pythonbrew 

Для завершения установки введите следующую команду

 $pythonbrew_install

Альтернативный способ установки:

Используйте команду curl, чтобы загрузить последнюю версию pythonbrew с github.

curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install

После загрузки измените «pythonbrew-install» на «executable».

 chmod +x pythonbrew-install

Затем запустите pythonbrew-install в терминале.

./pythonbrew-install

Теперь Pythonbrew был установлен в “Home Directory” т.е. /home/user/.pythonbrew

Затем скопируйте и вставьте следующую строку в конец ~/.bashrc

*ПРИМЕЧАНИЕ: измените “user” на свое имя пользователя в системе.

source /home/user/.pythonbrew/etc/bashrc

Вот и все! Закройте терминал. Шаги по установке разных версий Python:

Откройте новый терминал, введите следующую команду или скопируйте и вставьте ее.

$pythonbrew install 2.6.6

Это установит Python 2.6.6, а для установки Python 2.7 или Python 3.2 измените номер версии в предыдущей команде.

$pythonbrew install 2.7

or

$pythonbrew install 3.2

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

$pythonbrew install --force 2.7

or

$pythonbrew install --force 3.2

Как управлять разными версиями Python, установленными в системе

Например, если в вашей системе установлен Python 2.6.6, Python 2.7 и Python 3.2, переключение между версиями можно выполнить следующим образом:

По умолчанию Python 2.6.6 будет активен, и для переключения на Python 2.7 используйте команду ниже

$pythonbrew switch 2.7

Python по умолчанию изменен на Python 2.7.

Теперь, чтобы переключиться на Python 3.2, измените номер версии в предыдущей команде.

$pythonbrew switch 3.2

Используйте приведенную ниже команду, чтобы проверить или перечислить установленные версии Python.

$pythonbrew list

Используйте приведенную ниже команду, чтобы проверить или перечислить доступные версии Python для установки.

$pythonbrew list -k

Чтобы удалить любую установленную версию Python (например, чтобы удалить Python 2.7), используйте приведенную ниже команду.

$pythonbrew uninstall 2.7

Используйте приведенную ниже команду для обновления Pythonbrew

$pythonbrew update

Используйте приведенную ниже команду, чтобы отключить Pythonbrew и активировать версию по умолчанию.

$pythonbrew off

Наслаждайтесь опытом установки нескольких версий Python на одном компьютере с Linux / Ubuntu!

person Milind Birajdar    schedule 25.05.2012
comment
Похоже, что pythonbrew больше не находится в активной разработке. - person ThomasW; 07.12.2014
comment
файл pythonbrew-install создается с Not found . Пожалуйста, обновите ссылку - person Ramesh Pareek; 22.04.2018

Я считаю, что http://github.com/utahta/pythonbrew гораздо проще установить и использовать, чем любой другой решение.

Просто установите его, и у вас будут следующие возможности:

pythonbrew install 2.7.2
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide
pythonbrew uninstall 2.7.2

Примечание. если вы используете операционную систему на базе Linux с предустановленным Python, переключение (для всей системы) на другую версию может привести к сбоям, поэтому будьте осторожны.

person Armen Markossyan    schedule 03.03.2012

Более массовый подход, чем Virtualenv, — это параллельная установка двух версий Python.

Если существует существующая установка, и вы хотите установить вторую установку по тому же корневому пути (например, /usr/local), используйте эту цель при установке:

make altinstall

Когда ваша вторая установка — Python 2.6, у вас останется /usr/local/bin/python2.6 вместе со старым /usr/local/bin/python.

Простой способ переключения между этими двумя версиями — использование псевдонима оболочки (псевдоним python=/usr/local/bin/python2.6) в оболочке, в которой вы вызываете интерпретатор. Но это не будет работать с дополнительными оболочками и вызовами she-bang.

person ThomasH    schedule 10.07.2009

pyenv — еще один менеджер Python. В README.md по этой ссылке есть хороший набор инструкций, но в основном они таковы:

$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv

Затем настройте свой $PATH.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Установите нужные версии Python:

$ pyenv install 2.7.8

После установки вам нужно запустить это:

$ pyenv rehash

Затем переключитесь на версию Python, которую вы хотите запустить, для оболочки:

$ pyenv shell 2.7.8
person ThomasW    schedule 10.12.2014
comment
@RameshPareek Вам нужно будет следовать инструкциям для pyenv, которые находятся по адресу в моем ответе. - person ThomasW; 23.04.2018
comment
Пока он не сможет вместить существующие установки Python, я не считаю его готовым к использованию, это довольно простой IMO. Проблема для него: github.com/pyenv/pyenv/issues/1244. - person iain; 12.04.2019

«Вопрос 1: как я скажу какой-либо структуре, которая использует такую-то версию pf python, такую ​​​​как day django, использовать 2.6, а mjango использовать 2.4?»

Вы просто запускаете их с конкретной версией Python, которая им нужна. Запустите mjango с /usr/bin/python2.4 и django с /usr/bin/python2.6. Так просто.

«Вопрос 2: есть ли более элегантный способ переключения между версиями, поскольку мой взлом символических ссылок был настоящей катастрофой?»

Да, см. выше. Имейте две отдельные установки Python и явно запускайте их с разными версиями.

«Вопрос 3: Могу ли я скачать деб для сэй харди и заставить бойкую поверить, что это для нее?»

Это вообще работает. Если это не так, это потому, что у него есть зависимости, которые существуют в Hardy, и не существуют в Jaunty, и тогда вы не можете.

А вот вопрос 4, который вы не задавали, но должны были. ;)

«Есть ли более простой способ загрузить все эти модули Python?»

Да, есть. Установите setuptools и используйте easy_install. Это не поможет вам с библиотечными зависимостями для тех модулей Python, которые имеют код C и должны быть скомпилированы. Но это поможет со всеми остальными. easy_install загрузит и установит все зависимости Python для рассматриваемого модуля за один раз. Это значительно ускоряет установку модулей Python.

person Lennart Regebro    schedule 10.07.2009
comment
даже мне нравится easy_install, поэтому я не упомянул об этом, обычно мы игнорируем то, что нам нравится больше всего - person dhaval; 10.07.2009
comment
И я забыл упомянуть, что вы можете переключать среды с активацией virtualenv, что полезно, если у вас много скриптов. Ах хорошо. - person Lennart Regebro; 10.07.2009

Перейдите в каталог проекта:

Создайте среду: virtualenv -p python2.7 --no-site-packages ~/env/twoseven

Затем активируйте свой источник: source ~/env/twoseven/bin/activate

person crazyDiamond    schedule 13.02.2016