Два python на одном компьютере

Менеджер версий python

Иногда полезно держать несколько версий python на одной машине. Допустим для разработки двух проектов нам необходима вторая и третья ветка python. Или вы поддерживаете проект который использует старую версию python.

Обычно для этого мы используем виртуальное окружение virtualenv или же обертку для него virtualenvwrapper. Об этом я рассказывать не буду, так как есть уже много подобных статей, да и в документациях к самим утилитам все очень хорошо объяснено. Достаточно только забить virtualenv или virtualenvwrapper в поисковик.
Но в дополнение к ним я хочу рассказать в этой статье про менеджер версий python. Кому любопытно прошу под кат.

Чтобы использовать несколько версий python, можно установить их вручную или воспользоваться менеджер версий. Таких есть два: pythonbrew(который более не развивается) и pyenv. Оба менеджера не поддерживают windows(pythonbrew, pyenv) так что питонистам пишущим на этой платформе, придется пока разруливать все руками, либо сделать свою утилиту для смены путей до нужных версий. Кто как справляется с данной ситуацией можете оставлять в комментариях.
Так как pythonbrew более не поддерживается в этой статье он рассмотрен не будет.

P.S. В статье приведены примеры проверенные для OS Ubuntu 12.04. При попытке повторить их, делайте поправки относительно своего дистрибутива.

Ручной способ

Для того чтобы работать с несколькими версиями питона, можно установить необходимые версии в указанный префикс. Например чтобы не мудрить с правами, установим дополнительно 2 версии python(2.7.6 и 3.3.2) в директорию пользователю:
2.7.6

$ mkdir -p ~/python/src/ && cd ~/python/src/ $ wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz $ tar -xf ~/python/src/Python-2.7.6.tar.xz && cd ./Python-2.7.6 $ ./configure --prefix=$HOME/python/2.7.6/ $ make && make install 
$ wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz ~/python/src/ $ tar -xf ~/python/src/Python-3.3.2.tar.xz && cd ./Python-3.3.2 $ ./configure --prefix=$HOME/python/3.3.2/ $ make && make install 
$ virtualenv -p ~/python/2.7.6/bin/python env && . ./env/bin/activate 
$ mkvirtualenv -p ~/python/2.7.6/bin/python evnwrapper 

Собственно на основании такого способа описана статья по созданию мультихостинга.
Далее если вам необходимо использовать какую-то из этих версий как python по умолчанию, то вам необходимо добавить в переменную окружения путь до интерпретатора python.

$ echo 'export PATH=~/python/2.7.6/bin/' >> ~/.bashrc 

Соответственно вместо bashrc вы ставите bash_profile, zshrc, kshrc, profile в зависимости от вашей командной оболочки.

$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python $ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python 

Фух, ну вроде бы все. А теперь о том как можно сделать это проще использую менеджер версий python.

Читайте также:  Java to utf 8 online

PyEnv

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

  • Let you change the global Python version on a per-user basis.
  • Provide support for per-project Python versions.
  • Allow you to override the Python version with an environment variable.
  • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

Как ставить pyenv хорошо описывается в инструкции. Так же у автора есть скрипт который по мимо самой pyenv ставит еще и дополнительные плагины, в том числе и для virtualenv. Есть возможность установить плагин и для virtualenvwrapper.

# apt-get install make libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev 
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv 
$ curl https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash 

Во втором случае установка произойдет с дополнительными плагинами.
Далее, для того чтобы все заработало, дополним наш bashrc и перезагрузим оболочку:

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ . ~/.bashrc 
Пример использования
~ $ pyenv install 2.7.5 ~ $ pyenv install 3.3.2 ~ $ pyenv rehash ~ $ pyenv versions * system 2.7.5 3.3.2 ~ $ pyenv global 2.7.5 ~ $ python --version Python 2.7.5 ~ $ cd projects/ ~/projects $ pyenv local 3.3.2 ~/projects $ python --version Python 3.3.2 ~/projects $ cd test_prj/ ~/projects/test_prj $ python --version Python 3.3.2 ~/projects/test_prj $ cd .. ~/projects $ pyenv local --unset ~/projects $ python --version Python 2.7.5 

В добавок ко всему все довольно подробно и детально расписано у автора проекта в его репозиториях на github.

Виртуальное окружение

Все, а дальше как хотите. Если вы используете 3 ветку python то для создания виртуального окружения можно воспользоваться утилитой venv которая работает из коробки. Про это есть статья на хабре. Если вы больше привыкли к virtualenv или ее обертке virtualenvwrapper то тут есть два варианта: либо поставить плагин к pyenv, или использовать их к той версии python c которой вы работаете. Соответственно если выбрать первый вариант, то созданные вами окружения будут добавлены к вашим версиям python и доступны через команду:

Добавить плагин легко, просто клонируем его из репозитория pyenv-virtualenv или pyenv-virtualenvwrapper:

$ mkdir -p ~/.pyenv/plugins $ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ git clone git://github.com/yyuu/pyenv-virtualenvwrapper.git ~/.pyenv/plugins/pyenv-virtualenvwrapper 

Пример использования можно посмотреть в документации для pyenv-virtualenv и pyenv-virtualenvwrapper.
Все, а дальше пользуйтесь, как вам привычнее.

Пример использования
$ pyenv versions * system 2.7.5 3.3.2 $ mkdir -p ~/test_project/prj_for_2.7.5 && cd ~/test_project/prj_for_2.7.5 $ pyenv virtualenv 2.7.5 my-virtualenv-2.7.5 $ pyenv local my-virtualenv-2.7.5 $ pip install django==1.4 $ pip freeze Django==1.4 wsgiref==0.1.2 $ python --version Python 2.7.5 $ mkdir -p ~/test_project/test_project && cd ~/test_project/test_project $ pyenv virtualenv 3.3.2 my-virtualenv-3.3.2 $ pyenv local my-virtualenv-3.3.2 $ pip install django==1.5 $ pip freeze Django==1.5 $ python --version Python 3.3.2 

Теперь находясь в директории проекта можно запускать скрипт от нужной версии python не прилагая никаких действий. pyenv создает в директории файл .python-version который содержит в себе информацию о том какую версию python с каким окружение использовать для данного проекта.

Полезные ссылки

Источник

Установка нескольких версий Python в Windows с помощью Virtualenv

Если у вас уже есть некоторые виртуальные среды или вы используете Anaconda, убедитесь, что следующие шаги выполняются извне всех этих сред.

2. Установите Python

Вы можете скачать Python с официального сайта, например, python3.7.3 здесь.

Файл, который вы должны загрузить, называется Windows x86–64 executable installer , или, Windows x86 executable installer если по какой-то причине вы используете 32-битные окна.

После завершения загрузки откройте исполняемый файл и появится приглашение для установки.

  • Вы НЕ хотите добавлять новый python в вашу PATH, поскольку у нас будет несколько версий python на одном компьютере, и мы хотим, чтобы каждое приложение знало только одну версию python.
  • Либо используйте предложенное по умолчанию местоположение для нового питона, либо укажите местоположение по вашему выбору. В любом случае, запомните это место, и давайте теперь будем обозначать его C:\ \Python37 .

3. Создать virtualenv

Откройте Command Prompt , или, если вы используете Anaconda, откройте Anaconda Prompt .

Решите , где вы хотите хранить virtualenv, например,
C:\Users\ \Anaconda3\envs\ .

virtualenv C:\Users\\Anaconda3\envs\ -p C:\\Python37\python.exe

4. Обновите интерпретатор PyCharm

Если вы используете PyCharm, откройте проект, над которым вы хотели бы поработать (то есть / будет написано с новой версией Python), и затем File -> Settings -> Project -> Project Interpreter нажмите значок шестеренки, а затем Add.. .

Откроется окно с подсказкой, которое позволит вам определить нового интерпретатора:

Предполагая, что вы используете проверку кода, вам может потребоваться указать PyCharm, какую версию Python проверять. Перейдите File -> Settings-> Editor -> Inspections -> Python -> Code compatibility Inspection , убедитесь, что поле вверху указывает на конкретный проект, над которым вы работаете, и отметьте поле вашей версии Python.

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

5. Установите пакеты

В настоящее время ваш virtualenv содержит только важные пакеты, pip и setuptools . Чтобы установить больше пакетов:

  1. Откройте Command Prompt или Anaconda Prompt , и активируйте свой virtualenv, введя
    C:\Users\ \Anaconda3\envs\ \activate.bat
  2. Используйте pip для установки пакетов, как вы обычно делаете.
  3. Деактивировать свой virtualenv, введя deactivate .

Источник

Оцените статью