Поиск по сайту:

Как управлять несколькими версиями Python с помощью Pyenv в Linux

Вы программист, который хочет протестировать свой код Python в нескольких различных средах Python. Что бы вы сделали? Установите конкретную версию Python и протестируйте свой код, а затем удалите эту версию и снова установите другую версию и тестовый код? Нет, подождите! Это не является ненужным. Встречайте Pyenv, утилиту командной строки для одновременного управления несколькими версиями Python. Это сделало управление версиями Python проще, чем когда-либо. Он используется для установки, удаления и переключения на несколько разных версий Python.

Pyenv позволяет вам изменять глобальную версию Python для каждого пользователя, обеспечивать поддержку версий Python для каждого проекта, переопределять версию Python с помощью переменной среды и выполнять поиск команд в нескольких версиях Python одновременно. Pyenv можно использовать для тестирования вашего кода в нескольких средах Python. В этом уроке мы узнаем, как установить и использовать Pyenv в GNU/Linux.

Установите Pyenv в Linux

Прежде всего, установите следующие пакеты, чтобы избежать распространенных проблем со сборкой.

Для систем на базе Debian:

sudo apt-get install -y make build-essential git libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev

Для систем на базе RPM:

sudo yum install zlib-devel bzip2 bzip2-devel git readline-devel sqlite sqlite-devel openssl-devel xz xz-devel

Для SUSE/openSUSE:

sudo zypper in zlib-devel bzip2 libbz2-devel git readline-devel sqlite3 sqlite3-devel libopenssl-devel xz xz-devel

Мы только что установили необходимые предпосылки. Пришло время установить Pyenv. Официальный и рекомендуемый способ установки Pyenv — использование сценария pyenv-installer. Все, что вам нужно сделать, это запустить следующую команду в вашей оболочке, чтобы установить pyenv.

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

В конце установки установщик уведомит вас о необходимости добавить Pyenv в ваш PATH. В моем случае я добавил следующие строки в свой файл ~/.bash_profile.

 export PATH="/home/ostechnix/.pyenv/bin:$PATH"
 eval "$(pyenv init -)"
 eval "$(pyenv virtualenv-init -)"

Запустите команду ниже, чтобы изменения вступили в силу.

source ~/.bash_profile

Pyenv готов к использованию. Теперь давайте посмотрим, как управлять различными версиями Python с помощью Pyenv.

Управление несколькими версиями Python с помощью Pyenv в Linux

Сначала давайте посмотрим все доступные версии. Для этого просто выполните следующую команду:

pyenv install -l

Или,

pyenv install --list

Вы должны получить что-то вроде ниже.

Available versions:
 2.1.3
 2.2.3
 2.3.7
 2.4
 2.4.1
 .
 .
 .
 3.6.2
 3.6.3
 3.6.4
 3.7.0b1
 3.7-dev
 3.8-dev
[...]

Чтобы вывести список установленных на данный момент версий Python:

pyenv versions
* system (set by /home/ostechnix/.pyenv/version)

По умолчанию Pyenv использует наш системный Python по умолчанию. Здесь * означает значение по умолчанию.

Установить Python

Допустим, вам нужны версии Python 2.7.14 и 3.6.4 в вашей системе.

Для этого просто запустите:

pyenv install 2.7.14

Чтобы установить Python 3.6.4, запустите:

pyenv install 3.6.4

Вам не нужны права sudo. Все версии Python будут установлены в отдельный каталог в корневом каталоге pyenv в вашем $HOME. Корневой каталог pyenv по умолчанию — ~/.pyenv. Например, в моем случае Python 2.7.14 установлен в папку /home/ostechnix/.pyenv/versions/2.7.14.

ls /home/ostechnix/.pyenv/versions/
2.7.14 3.6.4

Теперь перечислите установленные версии Python.

pyenv versions
* system (set by /home/ostechnix/.pyenv/version)
 2.7.14
 3.6.4

Переключение между разными версиями Python

Мы можем переключиться на другой Python двумя способами: глобально и локально.

Давайте посмотрим текущую глобальную версию Python с помощью команды:

pyenv global
system

Их нет. Моя система по-прежнему использует системный Python по умолчанию. Давайте переключимся на другую версию Python, например 2.7.14.

pyenv global 2.7.14

Теперь проверьте версию Python по умолчанию:

pyenv versions
 system
* 2.7.14 (set by /home/ostechnix/.pyenv/version)
 3.6.4

Вы заметили звездочку (*)? Да, 2.7.14 — это наша глобальная версия Python по умолчанию.

Вы также можете указать несколько версий одновременно как глобальные Python. Допустим, у вас две версии 2.7.14 и 3.6.4. Если вы предпочитаете 2.7.14 3.6.4, просто запустите:

pyenv global 2.7.14 3.6.4

Теперь проверьте глобальные версии.

pyenv versions
 system
* 2.7.14 (set by /home/ostechnix/.pyenv/version)
* 3.6.4 (set by /home/ostechnix/.pyenv/version)

Теперь 2.7.14 и 3.6.4 являются глобальными версиями по умолчанию.

Мы можем установить локальную версию Python для конкретного приложения (для каждого проекта), записав имя версии в файл .python-version в текущем каталоге. Обратите внимание, что локальная версия переопределяет глобальную версию и может быть переопределена сама, установив переменную среды PYENV_VERSION или с помощью команды оболочки pyenv.

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

cd myproject/

Перейдем на 3.6.4.

pyenv local 3.6.4

Проверьте текущую локальную версию Python.

pyenv versions
 system
 2.7.14
* 3.6.4 (set by /home/ostechnix/myproject/.python-version)

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

Чтобы настроить виртуальную среду с определенной версией Python, выполните:

pyenv virtualenv 3.6.4 myenv

Чтобы сделать его доступным по всему миру, запустите:

pyenv global myenv
(myenv) ostechnix@ostechnix:~$

Теперь вы находитесь в своей виртуальной среде. Делай что хочешь. Устанавливайте и удаляйте приложения Python с помощью pip, а что нет. Это все ваше.

Если вы хотите настроить локальную виртуальную среду (для каждого каталога):

Перейдите в каталог вашего проекта и запустите:

pyenv local mylocalenv

Чтобы удалить виртуальную среду, просто выполните:

pyenv uninstall myenv
pyenv-virtualenv: remove /home/ostechnix/.pyenv/versions/3.6.4/envs/myenv? y

Удаление конкретной версии Python

Чтобы удалить определенную версию Python, например 3.6.4:

pyenv uninstall 3.6.4

Альтернативно, просто удалите каталог версии, которую вы хотите удалить.

Проверьте текущие установленные версии Python:

pyenv versions

Для получения более подробной информации прочтите раздел справки, выполнив следующую команду:

pyenv

Также проверьте «pyenv help <имя-команды>» для получения информации о конкретной команде. Например, вы можете просмотреть информацию о команде «установить», как показано ниже.

pyenv help install

И это все. Как видите, управлять несколькими версиями Python довольно просто! Если вы программист Python, Pyenv — важный инструмент, который следует иметь в своем арсенале.

Связанное чтение:

  • SDKMAN — инструмент CLI для простого управления несколькими комплектами разработки программного обеспечения
  • Как управлять несколькими версиями Java с помощью jEnv в Linux

Ресурсы:

  • Репозиторий Pyenv на GitHub
  • Репозиторий сценариев Pyenv-installer

Статьи по данной тематике