Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Pyenv - установка нескольких версий Python для разных проектов

Оригинал: Pyenv – Install Multiple Python Versions for Specific Project
Автор: Aaron Kili
Дата публикации: 29 июня 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2018 г.

Управление несколькими версиями Python в системе Linux - непростая задача, особенно для начинающих. Иногда даже становится все хуже, Если вы хотите разрабатывать и запускать несколько проектов с разными версиями Python на одном сервере, это может привести к серьезным проблемам. Однако этих проблем можно избежать, если вы используете pyenv.

Что такое Pyenv?

Pyenv - это простой, мощный и кроссплатформенный инструмент для управления несколькими версиями Python в Linux-системах, он используется для:

- переключения глобальной версии Python для каждого пользователя;
- установки локальной версии Python для каждого проекта;
- управления виртуальными средами, созданными anaconda или virtualenv;
- переопределения версии Python с переменной окружения;
- поиска команд из нескольких версий Python и для многого другого.

Как работает pyenv?

Как правило, версия Python по умолчанию используется для запуска всех ваших приложений, если вы явно не укажете версию, которую хотите использовать в приложении. Но pyenv реализует простую концепцию использования прокладок (легкие исполняемые файлы), чтобы передать вашу команду правильной версии Python, которую вы хотите использовать, когда у вас установлено несколько версий.

Эти прокладки вставлены pyenv в каталоги перед вашим PATH. Поэтому, когда вы запускаете команду Python, она перехватывается соответствующей прокладкой и передается в pyenv, который затем задает версию Python, указанную вашим приложением, и передает ваши команды правильной версии Python.

В этой статье мы покажем, как установить последнюю версию pyenv в Linux. Мы также продемонстрируем первые три случая использования, из перечисленных выше.

Установка Pyenv в Linux

1. Сначала установите все необходимые пакеты для установки разных версий Python из исходного кода, используя приведенные ниже команды для вашего дистрибутива Linux.

В Debian/Ubuntu/Linux Mint

$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev

В CentOS/RHEL

# yum -y install epel-release
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

В Fedora 22+

# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

2. Затем возьмите последнее дерево исходного кода pyenv из репозитория Github и установите его в $HOME/.pyenv, используя следующую команду.

$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv

3. Теперь вам нужно установить переменную среды PYENV_ROOT, чтобы указать путь, по которому вы установили pyenv и экспортировать его. Затем добавьте $PYENV_ROOT/bin в PATH для запуска утилиты командной строки pyenv.

Вам также необходимо включить прокладки, а также автодополнение, добавив pyenv init в свою оболочку. Сделайте все это в своем стартовом файле $HOME /.bashrc bash, как показано ниже.

$ vim $HOME/.bashrc 

Скопируйте и вставьте следующие строки в конце этого файла.

## pyenv configs
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi

4. После того, как вы внесли вышеуказанные изменения, вы можете либо перезагрузить файл $HOME/.bashrc, либо перезапустить оболочку, как показано ниже.

$ source $HOME/.bashrc
или
$ exec "$SHELL"

Установка нескольких версий Python в Linux

5. На этом этапе вы должны быть готовы начать использовать pyenv. Перед установкой любой версии Python вы можете просмотреть все доступные версии с помощью этой команды:

$ pynev install -l

просмотреть все доступные версии Python

6. Теперь вы можете установить несколько версий Python с помощью pyenv.

$ pyenv install 3.6.4
$ pyenv install 3.6.5

 установка нескольких версий Python

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

$ pyenv versions

список всех версий Python

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

$ pyenv global

Вы можете установить глобальную версию python с помощью команды pyenv:

$ pyenv global 3.6.5
$ pyenv global

установка глобальной версии python

9. Теперь вы можете установить локальную версию Python для каждого проекта, например, если у вас есть проект, расположенный в $HOME/python_projects/test, вы можете установить для него версию Python с помощью следующей команды:

$ cd python_projects/test
$ pyenv local 3.6.5
$ pyenv version		#view local python version for a specific project 
или
$ pyenv versions

установка локальной версии Python

10. Pyenv управляет виртуальными средами через плагин pyenv-virtualenv, который автоматизирует управление виртуальными и консольными средами для Python в Linux и других UNIX-подобных системах.

Вы можете начать с установки этого плагина с попомщью следующих команд:

$ git clone https://github.com/yyuu/pyenv-virtualenv.git   $HOME/.pyenv/plugins/pyenv-virtualenv
$ source $HOME/.bashrc

11. Теперь мы создадим тестовую виртуальную среду, называемую venv_project1, в проекте под названием project1:

$ cd python_projects
$ mkdir project1
$ cd project1
$ pyenv virtualenv 3.6.5 venv_project1

создание тестовой виртуальной среды

12. Теперь, когда вы выводите все версии Python, также должны быть указаны ваши виртуальные среды, а также их локальные версии python, как показано на скриншоте.

$ pyenv versions

просмотреть все доступные версии Python

13. Чтобы активировать virtualenv, например для venv_project1, введите следующую команду:

$ pyenv activate venv_project1

Примечание. При использовании последней версии плагина pyenv-virtualenv в первый раз, вы можете получить приведенное ниже сообщение:

Добавьте строку

export PYENV_VIRTUALENV_DISABLE_PROMPT=1

в ваш файл $HOME/.bashrc и перезагрузите его.

14. Чтобы отключить активированный virtualenv, запустите следующую команду:

$ pyenv deactivate

Для получения дополнительной информации вы можете вывести все команды pyenv:

$ pyenv commands

Подробнее о использовании языка Python и программировании на нем вы можете узнать из следующих статей на нашем сайте: