Перейти к содержимому

Как установить другую версию python

  • автор:

Использование нескольких версий Python на unix-подобных операционных системах

Использование нескольких версий Python на unix-подобных операционных системах главное изображение

Python как язык постоянно развивается. Ветка Py2 уже не поддерживается официально. Однако до сих пор существуют окружения, где приходится использовать Py2 и даже не свежий 2.7.x, а что-то постарее. Да и Python 3.x нынче — это большое семейство версий, кое-где несовместимых между собой, в т.ч. и синтаксически! Поэтому практикующий питонист широкого профиля должен понимать, как на одной машине иметь несколько версий среды исполнения. Даже если «в продакшне» и используется какой-нибудь Docker!

Установка Python из репозиториев пакетов операционной системы

Если вам повезло, то в репозитории пакетов ОС будет нужная версия Python, и вы сможете её установить с помощью команды вроде sudo apt-get install python3.5 . Однако достаточно старые дистрибутивы ОС могут не содержать новых версий Python, а достаточно новые дистрибутивы — старых версий Python. В особых случаях репозиторий вообще может содержать только одну версию среды исполнения.

Сборка из исходного кода

CPython — проект с исходным кодом. Доступ к исходному коду всех версий CPython позволяет собрать нужную версию самостоятельно. Однако это процесс, пусть и достаточно хорошо документирован, но всё же требует понимания того, что вам может потребоваться для компиляции кода под вашу операционную систему.

А ещё сборка из исходного кода — это единственный вариант для тех, кто хочет что-то в этом самом коде изменить или скомпилировать интерпретатор для какой-то экзотической платформы (встраиваемые системы, ретро-железо).

pyenv

Ещё одним из способов получения разных версий среды исполнения на одной машине является pyenv . Это «менеджер версий», выполненный в стиле rbenv для Ruby, nvm для NodeJS и т.п.

Миссия pyenv — управлять установленными версиями Python и делать некую версию «активной». Активная версия вызывается, если мы выполняем команду python (а также pip ), при этом разные проекты могут использовать разные активные версии и даже более чем одну одновременно. Последнее свойство полезно авторам библиотек, рассчитанных на широкий круг пользователей — таковые всегда нужно тестировать на разных версиях Python.

Установить pyenv достаточно просто, ведь инструмент представляет собой набор shell scripts. Именно поэтому получился pyenv максимально кроссплатформенным. Но за эту кроссплатформенность приходится платить тем, что каждую версию среды исполнения нужно компилировать из исходного кода! Для компиляции того же CPython потребуется компилятор Си ( gcc на Linux и clang на MacOS), и заголовочные файлы для библиотек, которые использует интерпретатор. Полный список пререквизитов для сборки приходится гуглить.

Установка системным пакетным менеджером из сторонних источников

Для большинства Unix-like ОС, помимо официальных репозиториев, существуют и неофициальные источники пакетов.

Для Debian-like систем, таких как Ubuntu и её производные, сторонние источники пакетов называются PPA, Personal Package Archives. Подключить любой PPA достаточно просто, но нужно понимать, что вы таким образом соглашаетесь на установку пакетов из стороннего источника, никак не подчиняющегося авторам дистрибутива ОС! Подключайте только хорошо зарекомендовавшие себя PPA, например от самих авторов ПО, которое вы хотите установить!

Для Ubuntu-based систем существует PPA от команды «deadsnakes» . Это проверенный источник пакетов с самыми разными версиями Python как для свежих релизов ОС, так и для релизов «второй свежести».

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

К тому же в популярных PPA пакеты обновляются своевременно, чего нельзя сказать про пакеты для устаревших релизов ОС, для которых срок поддержки закончился. Конечно, такие релизы лучше вообще не использовать (небезопасно!), но иногда может не быть выбора, а с PPA вы хотя бы будете иметь свежие версии среды исполнения.

Псевдонимы python , python2 , python3

Исторически сложилось так, что интерпретатор Python запускается командой python . Но в какой-то момент случились Python3, обратная несовместимость, «разброд и шатания». Чтобы внести некоторую определённость, был представлен PEP-394 : The «python» Command on Unix-Like Systems. Однако даже этот PEP разрешает разным системам самим выбирать, использовать ли Py2 и Py3 вместе или выбрать что-то одно. Системы должны лишь обеспечить, чтобы

  • команда python2 вызывала некую версию Python 2.x, если таковая вообще предоставляется;
  • команда python3 вызывала некую версию Python 3.x, если таковая предоставляется;
  • команда python соответствовала либо python2 , либо python3 (но не ссылалась на какую-то «третью» версию рантайма).

При этом не гарантируется, что все эти команды будут присутствовать в конкретном случае: где-то будет доступна только команда python3 , где-то — python2 . Псевдоним python вообще обязан присутствовать лишь в виртуальном окружении и всегда соответствовать той версии интерпретатора, которая была выбрана при создании окружения.

Такое «разнообразие» сильно усложняет жизнь разработчикам ПО, особенно — авторам инструментов разработки! Разработчик может написать скрипт для Py2 и указать в shebang #!/usr/bin/env python . Но на одних ОС команда python вообще не будет доступна и скрипт просто не запустится, а на других python будет означать какой-нибудь Python 3.8 и скрипт может даже запуститься, но сломается в процессе выполнения.

И даже если автор использует техники, позволяющие писать портируемый код ( six , 3to2 ), умеющий выполняться и на Py2, и на Py3, всё равно непонятно что же указать в shebang!

Вышеупомянутый PEP советует

  • либо фиксировать версию явно (только Py2 или только Py3),
  • либо требовать использования виртуальных окружений (в ВО всегда будет доступна команда python )
  • либо не писать shebang руками, а вместо этого использовать средства setuptools или другой системы пакетирования, создающие точки входа в зависимости при установке пакета (у точек входа shebang будет правильный).

Установка poetry на системы с разными версиями Python

На момент написания статьи poetry (это такой менеджер виртуальных окружений, сборщик пакетов и проч — «швейцарский нож» разработчика на Python) страдал от проблем с версиями рантайма: при установке рекомендованными способом скрипт-установщик завершался с ошибкой, либо установка проходила успешно, но затем не работала сама программа.

Дело (было?) в том, что и в скрипте-установщике и в точках входа в программу в shebang прописан python ! Сама программа работает и на Py2, и на Py3, но авторы исходили из предположения, что на целевой системе в любом случае будет присутствовать псевдоним python , вызывающий тот или иной интерпретатор. На некоторых системах такой команды нет…

Если использовать pyenv, оный всегда предоставляет команду python и poetry «просто работает». Нет проблем и на старых дистрибутивах, где ещё не отказались окончательно от Py2 . И конечно всё работает в виртуальном окружении. Рассмотрим этот вариант поподробнее.

Установка в выделенное виртуальное окружение

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

$ python3 -m venv $HOME/.poetry.venv 
$ $HOME/.poetry.venv/bin/pip install poetry 
$ $HOME/.poetry.venv/bin/poetry --version Poetry 0.12.17 

Программа установлена! Теперь создаём символическую ссылку на точку входа в папке, видимой в PATH , например, в $HOME/.local/bin :

$ ln -s $HOME/.poetry.venv/bin/poetry $HOME/.local/bin 
$ poetry --version Poetry 0.12.17 

Работает! Обновлять программу в будущем можно с помощью того же pip (который в окружении). А можно и вовсе автоматизировать процесс установки такого вот Python-софта с помощью pipx .

Особенности использования poetry, установленного в виртуальное окружение

Poetry построен так, чтобы работать с абстрактной версией python. Поэтому он хорошо сочетается с pyenv: один на себя берёт управление разными пайтонами, а другой — проектами на этих пайтонах.

Но эта привязка к команде python немного мешает, когда poetry установлен в своём собственном виртуальном окружении: в этом окружении Python уже известен и не может быть изменён. Данная особенность упомянута в документации к poetry, так что это «не баг, а фича». И всё же есть способ обойти сие ограничение: можно инициализировать окружение вручную с нужной версией Python и настроить poetry на использование этого готового окружения.

Для начала учим poetry создавать окружения не в своём кэше, а в папке с проектом:

$ poetry config settings.virtualenvs.in-project true 

С этих пор для каждого проекта виртуальное окружение будет располагаться в поддиректории .venv .

Уже в конкретном проекте инициализируем окружение командой

$ python3 -m venv .venv 

(для Py2 команда будет другой, т.к. модуль venv тогда ещё не поставлялся вместе со средой исполнения).

Теперь можно работать с poetry как обычно. Несмотря на то, что Python в проекте, возможно, отличается от рантайма, запускающего poetry!

Использование различных версий Python с помощью virtualenv

Часто возникает ситуация, когда для разработки различных проектов требуются разные версии Python. Например, один проект может работать на Python 2.7, в то время как другой требует Python 3.6. В этом случае на помощь приходит утилита virtualenv, которая позволяет создавать изолированные Python-окружения с любой нужной версией Python.

Что такое virtualenv?

Virtualenv — это инструмент для создания изолированных Python-окружений. Каждое окружение имеет свой собственный интерпретатор Python, который никак не связан с системным интерпретатором. Это означает, что можно установить любую версию Python в свое виртуальное окружение, не затрагивая системный Python.

Как использовать virtualenv?

Для начала нужно установить virtualenv. Это можно сделать с помощью pip:

pip install virtualenv

Затем, чтобы создать виртуальное окружение с определенной версией Python, нужно указать путь до интерпретатора этой версии. Например, если требуется версия Python 3.6, команда будет выглядеть так:

virtualenv -p /usr/bin/python3.6 myenv

В этом примере myenv — это имя создаваемого виртуального окружения, а /usr/bin/python3.6 — путь до интерпретатора Python 3.6.

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

source myenv/bin/activate

После активации виртуального окружения, любые команды Python будут использовать интерпретатор из этого окружения. Именно поэтому можно устанавливать разные версии Python в разные окружения, и они не будут конфликтовать между собой.

Заключение

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

Как переключаться между различными версиями Python. Как установить Python 2

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

  • Позволит вам изменить глобальную версию Python для каждого пользователя.
  • Обеспечит поддержку версий Python для каждого проекта.
  • Позволит вам переопределить версию Python с помощью переменной среды.
  • Может искать команды одновременно в нескольких версиях Python. Это может быть полезно для тестирования версий Python с помощью tox.

В отличие от pythonbrew и pythonz, pyenv не:

  • Зависит от самого Python. pyenv был создан из чистых скриптах Bash. У Python нет проблем с начальной загрузкой.
  • Нуждается в загрузке в вашу оболочку. Вместо этого pyenv работает путём добавления каталога в ваш $PATH.
  • Управляет virtualenv. Конечно, вы можете создать virtualenv самостоятельно или с pyenv-virtualenv для автоматизации процесса.

На высоком уровне pyenv перехватывает команды Python с помощью исполняемых файлов оболочки, вставленных в ваш $PATH, определяет, какая версия Python указана вашим приложением, и передаёт ваши команды в правильную установку Python.

Как установить pyenv в Debian, Ubuntu, Linux Mint, Kali Linux и их производные

Всё ещё существует довольно много востребованных инструментов, которые не были перенесены с Python 2 на Python 3, что вызывает проблемы при их использовании. Эта страница расскажет, как безопасно использовать устаревшую версию.

Python 2 больше не поддерживается в репозиториях Debian. Это означает, что мы должны найти способ обойти эту проблему. pyenv решает эту проблему, позволяя нам устанавливать несколько версий Python, которые не конфликтуют друг с другом. В настоящее время его нет в репозиториях Debian или Kali, поэтому нам нужно будет установить его из исходников. К счастью, есть удобный скрипт установки, выпущенный авторами. Давайте вместе пройдём установку и настройку.

Начнём с установки зависимостей:

sudo apt install -y 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 git

Далее мы просто запустим скрипт установки, написанный на bash. Если ZSH является оболочкой по умолчанию, после этого нам придётся отредактировать файл .zshrc.

curl https://pyenv.run | bash

Если мы используем ZSH, то теперь мы добавим соответствующие строки в наш .zshrc.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
exec $SHELL pyenv

Использование версий Python 2 в Debian, Ubuntu, Linux Mint, Kali Linux и их производных

Теперь мы можем установить Python 2 и сделать его нашей версией Python по умолчанию в pyenv:

pyenv install 2.7.18 pyenv global 2.7.18 pyenv versions python

Теперь мы можем устанавливать зависимости по мере необходимости для любых инструментов, которые мы используем. Когда мы хотим вернуться к Python 3, нам просто нужно установить значение global на system.

pyenv global system python -V

Следует иметь в виду, что нужно устанавливать зависимости через pip. apt будет не очень любезен, если вы пытаетесь установить зависимости Python 2 через него и через pip, поэтому в этом случае просто придерживайтесь pip.

Связанные статьи:

  • Переход на Python 3 в Debian и Kali Linux (100%)
  • Как настроить Python в качестве CGI модуля в Apache на Debian (Ubuntu, Linux Mint) (54.1%)
  • Как установить pip в Kali Linux (52.8%)
  • Решение проблемы со сломавшимся после обновления пакетов Pip (50%)
  • Решение проблемы с ошибкой fatal error: libxml/xmlversion.h: Нет такого файла или каталога (50%)
  • Как отключить функцию «did you mean. » в оболочке Linux (RANDOM — 2.8%)

Установка среды

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

Установка в Windows

Перейдите по ссылке https://www.python.org/downloads/, чтобы загрузить последнюю версию Python. В этом процессе мы установим Python 3.8.6 в нашу операционную систему Windows. Когда мы нажмем на вышеуказанную ссылку, перед нами откроется следующая страница.

Шаг — 1: Выберите версию Python для загрузки.

Description

Нажмите на кнопку загрузки.

Шаг — 2: Нажмите на кнопку Установить сейчас

Дважды щелкните исполняемый файл, который загружен; откроется следующее окно. Выберите Настроить установку и продолжите. Нажмите на флажок Add Path (Добавить путь), он автоматически установит путь к Python.

Description

Мы также можем нажать на настройку установки, чтобы выбрать желаемое местоположение и функции. Еще один важный момент — установка checkbox для всех пользователей должен быть отмечен.

Шаг — 3 Процесс установки

Description

После установки попробуйте запустить python в командной строке. Введите команду python —version .

Description

Мы готовы работать с Python.

Установка в MacOS

Войдите в терминал как администратор

При установке Python3 на MacOS используются следующие шаги.

(1) Проверка версии Python в системе

Мы можем проверить, какая версия Python в настоящее время установлена в нашей системе. Как правило, по умолчанию установлен Python 2.7.

Давайте посмотрим, как это можно сделать.

$ python --version 

Description

Он показывает, что на компьютере установлен Python 2.7.10, что бывает довольно часто.

(2) Загрузка Python 3.6.3

Для того чтобы установить Python 3.6.3, мы должны скачать последнюю версию с официального сайта https://www.python.org/downloads/ . Файл загружается в формате .pkg , который может быть непосредственно установлен с помощью команды Installer .

(3) Установка Python 3.6.3

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

Давайте посмотрим, как это можно сделать.

Description

Поскольку программа установки используется с правами суперпользователя, поэтому sudo заставляет терминал предложить пользователю ввести пароль администратора. Процесс устанавливает Python 3.6.3 в корневой каталог, указанный в опции target.

(4) Проверка что Python3 появился в системе

Чтобы проверить, какая версия Python установлена на машине, мы можем использовать команду python —version . Так как по умолчанию установлена версия Python 2.7.10, поэтому она показывает python 2.7.10, но это дает нам возможность проверить версию Python 3 на нашем компьютере.

Давайте посмотрим, как мы можем использовать python 3, чтобы проверить, какая версия Python 3 запущена.

$ python --version 

(5) Работа в режиме сценария Python

Чтобы работать в командной строке Python, просто наберите в терминале python3 . Откроется оболочка Python, в которой мы можем выполнять операторы Python. Поскольку программа установки используется с правами суперпользователя, поэтому sudo заставляет терминал предложить пользователю ввести пароль администратора. Процесс устанавливает Python 3.6.3 в корневой каталог, указанный в опции target.

Description

Чтобы запустить файл Python (.py) на терминале, мы просто набираем имя файла, и он интерпретируется.

Итак, мы установили Python3 в MacOS.

Установка в Ubuntu

Ниже продемонсрируем установку Python 3 в Linux на примере установки Python 3 в Ubuntu 16.04 LTS

(1) Обновляем список пакетов из репозитория с помощью инструмента APT

$ apt-get update 

(2) Установка Python

$ apt-get install python3.6 

(3) Проверка Python

Когда мы запускаем в терминале python , он показывает установленный по умолчанию python 2.7.

$ python 

Description

Для Python3 введите следующую команду, тогда она также покажет другую версию.

$ python3 

Description

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *