Переключение версий 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