Как изменить версию Python в Ubuntu и Debian

Python — это язык программирования высокого уровня, широко используемый для системного программирования. Он доступен для всех популярных операционных систем. Вы можете установить более одной версии Python в одной системе. После установки нескольких версий Python вы можете изменить Python по умолчанию с помощью инструмента альтернатив обновления.
Всем разработчикам Python рекомендуется использовать виртуальную среду для приложений. Что обеспечивает изолированную среду для приложения с определенной версией Python.
Изменить версию Python в Ubuntu и Debian
Инструмент командной строки update-alternatives используется для создания и поддержки символических ссылок для предопределенных команд. С помощью этого мы можем легко переключать команды на разные версии. Для этого руководства в системе Debian установлены Python3.9 и Python2.7. Мы создадим группу для обеих команд и установим символические ссылки.
Создайте символическую ссылку из /usr/bin/python2.7 в /usr/bin/python и установите имя группы как «python». Впоследствии имя группы будет использоваться для изменения ссылок.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
Измените символическую ссылку в /usr/bin/python3.9 на /usr/bin/python и установите имя группы на «python». Имя группы должно быть одинаковым для всех версий Python.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 2
update-alternatives: using /usr/bin/python3.9 to provide /usr/bin/python (python) in auto mode
Повторите шаг 2, чтобы добавить несколько версий Python в группу, которая уже установлена в вашей системе.
На данный момент вы добавили две бинарные версии Python к имени группы «python». Теперь вы можете легко переключиться на любую версию с помощью следующих команд. Здесь «python» — это имя группы, определенное в приведенных выше командах.
sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/python3.9 2 auto mode * 1 /usr/bin/python2.7 1 manual mode 2 /usr/bin/python3.9 2 manual mode Press to keep the current choice[*], or type selection number:
В этом выводе выше Python 2.7 установлена как текущая версия. Чтобы изменить его на Python 3.9, вам нужно ввести 0 или 2 и нажать Enter.
Это все. Текущая версия Python изменилась в вашей системе. Просто введите следующую команду, чтобы просмотреть правильно активную версию Python.
python -V
Python 3.9.2
Вы можете добавить несколько версий Python в группу (шаги: 01 и 02) и легко переключаться между ними.
Вывод
В этом руководстве вы узнали, как изменить версии Python по умолчанию в ваших системах Ubuntu и Debian Linux. Вместо переключения версий вы также можете настроить виртуальную среду Python для своих приложений.
Supportaci se ti piacciono i nostri contenuti. Grazie.
Noviello.it Newsletter
Ricevi gli ultimi approfondimenti direttamente nella tua casella di posta!
Управление несколькими версиями Python под управлением Ubuntu 20.04
Одно из моих первых разочарований при разработке на Python не имело ничего общего с самим Python, а скорее с излишне изотерическими действиями по развертыванию приложений на Python. Учебные курсы и руководства отлично справляются с задачей обучения студентов запуску Python кода локально, но действительно стоящие приложения не запускают на локальных машинах: они работают на интернет серверах потому что именно в этом и есть их назначение, не так ли? Хотя может быть я высказал сумасшедшую идею.
Ubuntu 20.04 это первая LTS версия Ubuntu в которой отсутствует Python2 и которая поставляется из коробки с установленной версией Python 3.8.5. Но что если написанное вами приложение использующее более новую версию Python? Если вы, как и я, пытались заменить установленную по умолчанию в системе версию, то в процессе сломали вашу ОС. Если до этого вам никто не говорил не делать этого, тогда я возьму на себя эту честь: не делайте этого.
Итак, что же нам делать? Существует нескольок путей как обновить версию Python на Ubuntu, но использование вастроенного в Ubuntu’s механизма «alternative install» оптимально по нескольким причинам:
- Мы хотим оставить нетронутойси стемную версию Python
- По возможности не возиться с Python PATH
- Мы можем удобно переключать активную версию Python с использованием CLI
Мы пройдемся по способу легкой и безопасной установки последней версии Python не затрагивая системную версию Python.
Скачивание последней версии Python
Первый шаг должен быть вам знаком: нам необходимо обновить зеркала Ubuntu и установленные пакеты, что бы быть уверенными что мы загружаем последние версии пакетов при установке чего-либо:
Обязательные обновления: $ sudo apt update && sudo apt upgrade -y
Установка другой версии Python на Ubuntu трубует установки целого ряда зависимых библиотек для Python. Я честно гвооря не уверен что делает половина из этого, и скорее всего это никому из нас никогда не понадобится. Но поверьте, это необходимый шаг:
Установка зависимостей Python: $ sudo apt-get install build-essential checkinstall $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \ libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
Именно здесь многие могут начать установку Python с помощью Ubuntu package manager командой apt-get install python3.X. Мы скачаем и соберем последнюю версию Python из исходные кодов по нескольким причинам. Если версия Python достаточно свежая, некоторые машины под управлением Ubuntu могут не иметь обновленных зеркал что бы получить последнюю версию, но важнее всего то, что этот способ позволяет упростить управление несколькими версиями Python на Ubuntu.
Последнюю версию Python всегда можно найти на официальной странице с релизами на Python.org:
Первая ссылка на указанной странице должна называться Latest Python 3 Release — Python 3.X. Перейдя по ней необходимо прокрутить вниз страницы до секции «Files» и скопировать URL ссылки Gzipped source tarball.
На вашей Ubuntu машине необходимо теперь скачать эти исходные коды с помощью утилиты «wget». Ниже пример команд для скачивания заархивированной версии Python 3.9.2 в папку /opt и распаковка ее:
Скачивание Python: $ cd /opt $ sudo wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz $ sudo tar xzf Python-3.9.2.tgz
Теперь последняя версия Python скачана. После этого нам остается ее установить… правильно.
Установка альтернативной версии Python из исходных кодов
Главное разочарование установки Python с использованием команды apt-get install python3.X это что Python будет установлен нормально, но Ubuntu будет по прежнему использовать установленную в системе по умолчанию версию Python. К счастью для нас Ubuntu позволяет устанавливать нам дополнительные (альтернативные) версии Python с использованием команды make altinstall :
Установка из исходных кодов: $ cd Python-3.9.2 $ sudo ./configure —enable-optimizations $ sudo make altinstall
Исполнение этих команд может занять некоторое время. После того, как команды будут выполнены вы можете увидеть python3.9 в вашей директории /usr/local/bin/ :
Проверка версии Python $ cd /usr/local/bin/ $ ls
Итак, теперь у нас есть две установленные версии Python: установленная в системе по-умолчанию Python 3.8.5 и добавленная нами новая версия Python 3.9.2. Мы хотим оставить нетронутой установленную в системе версию по-умолчанию, но мы так же хотим запускать написанные нами приложения в версии Python 3.9… итак как мы можем этим управлять?
Linux предусматривает такой сценарий с помощью команды update-alternatives . Мы можем сказать Ubuntu что у нас есть ветка с альтернативной версией на нашей машине, это предоставит нам возможность легко переключаться между ними. Вот как это работает:
Включение альтернативной версии Python $ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 $ update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.9 2
Мы запускаем update-alternatives дважды: один раз для Python 3.8, и один раз для Python 3.9. Теперь мы можем использовать команду update-alternatives —list что бы посмотреть все альтернативные версии какого-либо установленного ПО:
Список установленных версий Python $ update-alternatives --list python3 /usr/bin/python3.6 /usr/local/bin/python3.8
Теперь мы можем переключаться между установленными версиями Python! Запустите следующую команду:
Переключение между версиями $ update-alternatives --config python3
После выполнения команды вы должны получить подсказку как в приведенном ниже примере. Это будет список всех доступных версий Python в вашей системе. Выберите версию которую хотите использовать введя соответствующий номер версии указанный в колонке Selection :
CLI для переключения активной версии Python Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/python3.8 3 auto mode * 1 /usr/bin/python3.8 3 manual mode 2 /usr/local/bin/python3.10 2 manual mode Press to keep the current choice[*], or type selection number:
И вы это сделали! Для переключения версии Python все что нужно — это ввести запрошенный номер версии Python указанный в колонке selection .
Это прозвучит абсурдно, но изменить версию Python в Ubuntu ничего не сломав — это впечатляет. Я бы сказал что это в основном вина тех, кто преподаает Python. Если «учат те, кто не может сделать», то было бы логично предположить что Python преподают те, кто не запустил ни одного значимого проекта. Это было жестко, но не бейте меня нисмотря ни на что.
Мы закончили самую трудную часть, но осталось еще немного рутинной работы. Нам все еще нужно установить pip для нашей свежеустановленной версии Python, а так же обновить pip до последней версии.
Установка pip3 $ apt install python3-pip $ python3.9 -m pip install --upgrade pip
Вы наверняка заметили что Ubuntu 20.04 (и новее) заставляют нас явно указывать python3 при использовании Python несмотря на отсутствие Python 2 на машине. Это немного раздражает, но так же потенциально может сломать библиотеки которые пытаются использовать Python (NPM, sqlite и node-qyp например)
Возможно вы чувствуетет в себе достаточно сил что бы создать alias, который будет при обращении к python ссылаться на python3, но к сожалению это не будет работать так, как вам бы хотелось. Хорошая новость в том, что есть простое решение:
Скажите Ubuntu что python это python3 $ apt-get install python-is-python3
Да, есть целый пакет для Ubuntu созданный специально для решения этой задачи. Но это работает ¯_(ツ)_/¯.
- Python
- multiple version
- несколько версий
Как переключаться между различными версиями 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, используемого по умолчанию, с версии 2.7 на 3.6 в Ubuntu 18.04
В текущий момент язык Python находится в процессе транзита с версии 2.x на 3.x, что влияет на корректность исполнения приложений, которые рассчитывают на ту или иную версию интерпретатора. Обычно, проблемы нет, если используется среда VirtualEnv, когда вы можете выбрать требуемое окружение при его создании, но приложения, которые выполняются вне VirtualEnv могут рассчитывать на ту или иную версию Python. В данной заметке мы рассмотрим простые шаги, как изменить версию Python, используемую по умолчанию, в Ubuntu Linux 18.04.
Для начала выясните какая версия используется в настоящий момент:
$ python -V Python 2.7.15+
Мы видим, что в настоящее время в системе используется интерпретатор Python версии 2.7. Предположим, что вам требуется python 3.6. Проверьте, что он доступен:
$ whereis python3 python3: /usr/bin/python3.6m /usr/bin/python3.6m-config /usr/bin/python3.6-config /usr/bin/python3.6 /usr/bin/python3 /usr/lib/python3.7 /usr/lib/python3.6 /usr/lib/python3 /etc/python3.6 /etc/python3 /usr/local/lib/python3.6 /usr/include/python3.6m /usr/include/python3.6 /usr/share/python3 /usr/share/man/man1/python3.1.gz
Если в процессе выполнения вышеуказанной команды интерпретатор не найден, используйте apt для его установки:
sudo apt update && sudo apt install python3
Теперь вы можете переключить версию интерпретатора, выполнив команду ln :
sudo ln -sfn /usr/bin/python3.6 /usr/bin/python
Запросите версию python повторно:
$ python -V Python 3.6.8
Как можно видеть, версия интерпретатор изменена на требуемую. Данное решение полезно, когда в систему устанавливается программное обеспечение из сторонних пакетов, которое рассчитывает на то, что по-умолчанию используется Python версии 3.