Переключение версий Python

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

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

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

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

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 для каждого проекта, над которым я работаю, и не предоставляю ему доступ к глобальным пакетам сайтов. Это держит все пакеты вместе и позволяет мне иметь конкретные версии всего, что мне нужно.

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

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

source ~/env/NEW_DJANGO_PROJECT/bin/activate

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

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

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" на "исполняемый"

 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

или же

$pythonbrew install 3.2

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

$pythonbrew install --force 2.7

или же

$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!

Я считаю, что 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, переключение (всей системы) на другую версию может привести к ошибкам, поэтому будьте осторожны.

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

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

make altinstall

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

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

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

"Вопрос 1: Как я скажу любому фреймворку, который использует версию так и так далее, например, 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.

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

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

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

Другие вопросы по тегам