Как управлять несколькими версиями 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