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

Если вы изучаете проекты и пакеты на основе Python вы можете оказаться в ситуации, когда вам понадобится другая версия Python. Я столкнулся с такой ситуацией, когда пытался установить библиотеку PyCoral, которая работает только с Python версий 3.6-3.9, а в моей системе был Python 3.11.

Хорошо то, что вам не нужно устанавливать существующую версию Python, предоставляемую вашим дистрибутивом, и установить новую.

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

Установка pyenv на Ubuntu

Поскольку pyenv собирает Python из исходников, для использования pyenv вам потребуется установить зависимости для сборки.

В дистрибутивах на базе Ubuntu и Debian вы можете использовать эту команду для получения всех необходимых пакетов.

sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl

Некоторые из вышеупомянутых пакетов могут быть уже установлены.

После установки зависимостей вы можете установить pyenv с помощью официального скрипта:

curl https://pyenv.run | bash

Он загрузит скрипт и запустит его.

После завершения сценария он должен выдать вам инструкции по автоматической загрузке pyenv. Этот вывод зависит от используемой вами оболочки. Для меня в bash он показал:

Load pyenv automatically by appending
the following to 
~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
and ~/.bashrc (for interactive shells) :
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

Поэтому я отредактировал файл ~/.bashrc и поместил упомянутый код в его конец.

После этого либо перезагрузите оболочку командой ниже, либо просто перезапустите терминал:

exec "$SHELL"

Давайте убедимся, что pyenv установлен в вашей системе, проверив версию pyenv:

pyenv --version

Если вы видите число, а не ошибку, значит, pyenv установлен на вашем Ubuntu Linux. Пришло время посмотреть, как его использовать.

Установка различных версий Python с помощью pyenv

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

pyenv --list

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

Если вас интересуют различные версии Python3, воспользуйтесь магией regex и grep. Допустим, вас интересуют версии Python с 3.6 по 3.9. Для этого используйте:

pyenv install --list | grep " 3\.[6789]"

Это все еще будет большой список, но не такой огромный, как тот, который вы видели раньше.

Я делаю это, чтобы попробовать проекты Coral, использующие библиотеки PyCoral, а они работают только с Python от 3.6 до Python 3.9. Если я посмотрю на статус версий Python, то 3.9 кажется хорошей версией для перехода. Я перейду на версию 3.9.19:

pyenv install -v 3.9.19

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

Расположение версии Python

Различные версии Python, которые вы устанавливаете с помощью pyenv, находятся в каталоге ~/.pyenv/versions/.

abhishek@raspberrypi:~ $ ls ~/.pyenv/versions/
3.9.19

Список установленных версий Python

Вы можете посмотреть, какие дополнительные версии Python установлены:

pyenv versions

Это должно показать системную версию (версию Python, установленную в вашем дистрибутиве) и дополнительные версии, установленные pyenv:

* system (set by /home/abhishek/.pyenv/version)
  3.9.19

Звездочка * в приведенном выше выводе команды означает текущую активную версию Python.h3. Использование дополнительных версий Python

Если вы просто хотите запустить что-то с определенной версией Python, вы можете использовать ее следующим образом:

pyenv exec python3.9.19 test.py

Кроме того, вы можете изменить версию Python по умолчанию по своему усмотрению:

pyenv global 3.9.19

Вы можете убедиться, что активная версия Python изменилась, посмотрев на запись с символом * в списке версий:

abhishek@itsfoss:~ $ pyenv global 3.9.19
abhishek@itsfoss:~ $ pyenv versions     
  system
* 3.9.19 (set by /home/abhishek/.pyenv/version)
abhishek@raspberrypi:~ $

Позже вы можете вернуться к системной версии:

pyenv global system

Удаление дополнительных версий Python

Это тоже довольно просто. Вы можете либо удалить его папку:

rm -rf ~/.pyenv/versions/<python_version_to_delete>

Либо использовать команду pyenv следующим образом:

pyenv uninstall <python_version>

Предпочтение использования виртуальных сред

Даже если вы устанавливаете несколько версий Python, было бы неплохо В этом руководстве я покажу вам, как установить и использовать этот инструмент для одновременной установки нескольких версий Python на ваши дистрибутивы на базе Ubuntu и Debian. Таким образом, вы не будете путаться в пакетах на уровне системы.

Допустим, я хочу использовать Python 3.9.19 для проекта под названием coral. Я создам виртуальную среду для этого проекта (имя не обязательно должно совпадать):

pyenv virtualenv 3.9.19 coral

Теперь я переключусь на эту виртуальную среду:

pyenv local coral

Вы можете убедиться, что виртуальная среда используется:

abhishek@itsfoss:~ $ pyenv which python
/home/abhishek/.pyenv/versions/coral/bin/python

Помните, что вы все еще не можете использовать „apt install python-package-name“, надеясь, что он будет установлен с другой версией Python в виртуальной среде. Для этого вам придется использовать pip:

pip install python-package-name

Это позволит установить указанный пакет Python в конкретную виртуальную среду с указанной вами версией Python.

Надеюсь, вам понравилось это руководство по управлению различными версиями Python на Ubuntu. Хотя я не являюсь экспертом по Python, но я постараюсь помочь вам, если у вас возникнут вопросы._

Зарубин Иван Эксперт по Linux и Windows

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

Похожие статьи

Комментарии (0)