Переключающие версии python

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

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

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

Question3: Могу ли я скачать deb для say hardy и заставить jaunty поверить в это для нее?

Ответы

Ответ 1

Используйте 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 должен уметь решать все ваши проблемы.

Ответ 2

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

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

 Dependencies – curl

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

 $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" i.e., /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!

Ответ 3

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

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

make altinstall

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

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

Ответ 4

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

Ответ 5

"Question1: Как я скажу любой фреймворк, который идет и использует версию так и так pf python, как day django, чтобы использовать 2.6 и сказать mjango, чтобы использовать 2.4?

Вы просто запускаете их с конкретной версией python, в которой они нуждаются. Запустите mjango с /usr/bin/python 2.4 и django с /usr/bin/python 2.6. Так просто.

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

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

"Question3: Могу ли я скачать deb для say hardy и заставить jaunty поверить в это для нее?"

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

И вот вопрос 4, который вы не спрашивали, но должен иметь.;)

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

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

Ответ 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

Ответ 7

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

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

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