Linux несколько версий python

Pyenv — установка нескольких версий Python для разных проектов

Оригинал: Pyenv – Install Multiple Python Versions for Specific Project
Автор: Aaron Kili
Дата публикации: 29 июня 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2018 г.

Управление несколькими версиями Python в системе Linux — непростая задача, особенно для начинающих. Иногда даже становится все хуже, Если вы хотите разрабатывать и запускать несколько проектов с разными версиями Python на одном сервере, это может привести к серьезным проблемам. Однако этих проблем можно избежать, если вы используете pyenv.

Что такое Pyenv?

Pyenv — это простой, мощный и кроссплатформенный инструмент для управления несколькими версиями Python в Linux-системах, он используется для:

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

Как работает pyenv?

Как правило, версия Python по умолчанию используется для запуска всех ваших приложений, если вы явно не укажете версию, которую хотите использовать в приложении. Но pyenv реализует простую концепцию использования прокладок (легкие исполняемые файлы), чтобы передать вашу команду правильной версии Python, которую вы хотите использовать, когда у вас установлено несколько версий.

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

В этой статье мы покажем, как установить последнюю версию pyenv в Linux. Мы также продемонстрируем первые три случая использования, из перечисленных выше.

Установка Pyenv в Linux

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

В Debian/Ubuntu/Linux Mint

2. Затем возьмите последнее дерево исходного кода pyenv из репозитория Github и установите его в $HOME/.pyenv, используя следующую команду.

3. Теперь вам нужно установить переменную среды PYENV_ROOT, чтобы указать путь, по которому вы установили pyenv и экспортировать его. Затем добавьте $PYENV_ROOT/bin в PATH для запуска утилиты командной строки pyenv.

Вам также необходимо включить прокладки, а также автодополнение, добавив pyenv init в свою оболочку. Сделайте все это в своем стартовом файле $HOME /.bashrc bash, как показано ниже.

Скопируйте и вставьте следующие строки в конце этого файла.

4. После того, как вы внесли вышеуказанные изменения, вы можете либо перезагрузить файл $HOME/.bashrc, либо перезапустить оболочку, как показано ниже.

Установка нескольких версий Python в Linux

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

6. Теперь вы можете установить несколько версий Python с помощью pyenv.

Читайте также:  Windows ярлык с url

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

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

Вы можете установить глобальную версию python с помощью команды pyenv:

9. Теперь вы можете установить локальную версию Python для каждого проекта, например, если у вас есть проект, расположенный в $HOME/python_projects/test, вы можете установить для него версию Python с помощью следующей команды:

10. Pyenv управляет виртуальными средами через плагин pyenv-virtualenv, который автоматизирует управление виртуальными и консольными средами для Python в Linux и других UNIX-подобных системах.

Вы можете начать с установки этого плагина с попомщью следующих команд:

11. Теперь мы создадим тестовую виртуальную среду, называемую venv_project1, в проекте под названием project1:

12. Теперь, когда вы выводите все версии Python, также должны быть указаны ваши виртуальные среды, а также их локальные версии python, как показано на скриншоте.

13. Чтобы активировать virtualenv, например для venv_project1, введите следующую команду:

Примечание. При использовании последней версии плагина pyenv-virtualenv в первый раз, вы можете получить приведенное ниже сообщение:

в ваш файл $HOME/.bashrc и перезагрузите его.

14. Чтобы отключить активированный virtualenv, запустите следующую команду:

Для получения дополнительной информации вы можете вывести все команды pyenv:

Подробнее о использовании языка 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, поэтому нам нужно будет установить его из исходников. К счастью, есть удобный скрипт установки, выпущенный авторами. Давайте вместе пройдём установку и настройку.

Читайте также:  Hp t610 windows embedded

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

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

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

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

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

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

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

Источник

Несколько версий питона. Основная версия.

Похожие темы уже есть, но я не нашёл там нормального ответа. Кроме того, они в архиве, потому я их поднять не могу. Потому прошу прощения, что создаю ещё одну.

Можно ли и нужно ли на вызов python повесить последнюю версию?

Питон версии 3.7 я поставил из недефолтного для системы репозитория, чтобы разрешить вот эту проблему. Но не помогло. Почему?

Стоит ли повесить на вызов python3 последнюю версию и как?)

Python 3.x обратно совместимы, поэтому можешь повесить на python3 самый свежий, ничего сломаться не должно

3.4 всё ещё самый быстрый и экономный по памяти. Но многие уже начали использовать актуальные фичи. А так может сломаться — внезапно перестанет хватать памяти и привет.

поэтому можешь повесить на python3 самый свежий

А как такие вещи кошерно делать?

Можно ли и нужно ли на вызов python повесить последнюю версию?

Нет, это работа ментейнеров дистрибутива если у тебя не гента/lfs.

Python 3.x обратно совместимы, поэтому можешь повесить на python3 самый свежий, ничего сломаться не должно

Нет, нельзя. Бинарные пакеты собраны с конкретным питоном. Плюс site-packages разные.

Если есть несколько Python-ов, то надо создать виртeальную рабочую среду (virtual environment) и затем перед началом работы загружать её. Этим выбирается нужный python и (что важно) нужный pip (который обычно и используется для установки пакетов. Ставит их только в относящийся к нему Python). Обычно для создания и выбора virtual environment используется модуль venv (может понадобиться сначала установить его), но если у вас популярный дистрибутив Python Anaconda, то там есть своя команда (см. в google по словам python venv или python anacinda environment).

В Mint (и Ubuntu) есть подвох — одна программа резервного копирования втихомолку ставит Python 2.7.15 (причём бета-версию), после чего может возникнуть путаница между ним и желаемым Python-ом, если не использовать virtual environment.

Чтобы вместо python3 писать просто python (до выбора virtual environment), можно использовать команду Linux update-alternatives.

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

Но с непривычки можно спутать, какая именно версия сейчас используется. Например, ставить пакет с помощью pip install, но сработает pip не от того Python-а, который нужен, и поставит пакет не туда. Во избежание этого и надо пользоваться virtual environment.

Читайте также:  Windows logon reminder ваш сеанс работы будет прекращен

Нет, нельзя. Бинарные пакеты собраны с конкретным питоном. Плюс site-packages разные.

Речь идёт о (я надеюсь) модификации $PATH , чтобы при выполнении python3 от юзера, а равно и /usr/bin/env python3 , открывался Python 3.7. Что именно ломает такой подход?

Да, забыл описать про Pýthon Anaconda. Последняя версия содержит Python 3.7. Если нужен ещё Python 3.6, то он ставится в это Anaconda в виде пакета, потом создаются environment-ы отдельно для 3.7 и 3.6 и перед началом работы выбирается нужное из них. Подробнее описано на сайте Python Anaconda.

Вау. Спасибо за столь развёрнутый ответ.

А можно ли изучать основы Python по книжкам 5-летней давности? Я слышал ЛГБТ-шизойды заставили переименовать половину терминов, и теперь не язык, а хрень какая-то политкорректная. Кто прогает? У вас это вызвало проблемы? Или хотя-бы душевную боль?

То есть, сейчас основная версия 3.7

В каком это дистрибутиве она основная? Везде 3.6.

Не в дистрибутиве, а в Python-е. Если в дистрибутиве нет, ставится вручную. Лохам, которые не могут поставить программное средство вручную по инструкции, можно поискать другое занятие, чем программирование. Казалось бы, очевидно.

Можно использовать Python Anaconda. Это стандартный дистрибутив, но с большим количеством популярных пакетов и некоторыми полезными дополнительными программами. Ставится согласно инструкции на его сайте.

Моё упоминание update-alternatives было неудачным. Я его испытывал, но не стал пользоваться, так как мешало переходу с 3.6 на 3.7 — оно меняет Python по умолчанию для всей Linux, а это может быть нежелательно. В описании Ubuntu говорится, что можно менять последнюю цифру версии, с которой поставляется Ubuntu. То есть, если сначала была 3.6.5, то можно сменить на 3.6.7. Но менять предпоследнюю цифру не рекомендуется, так как это может нарушить работу входящих в Linux программ.

Проект Python для соблюдения политкорректности избавляется от терминов «master» и «slave».

Так я повторяю свой вопрос.

А можно ли изучать основы Python по книжкам 5-летней давности? Я слышал ЛГБТ-шизойды заставили переименовать половину терминов, и теперь не язык, а хрень какая-то политкорректная. Кто прогает? У вас это вызвало проблемы? Или хотя-бы душевную боль?

А еще это подонки прогнали Гвидо с поста директора. И не верьте этим сказкам про то что «надоело», «нет времени на семью», «новое призвание». Все это бред. Они просто стравили его, эти мерзкие токсичные подобия людей.

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

В арчике например

Лучше отделять мух от котлет. Для приложений юзать virtualenv и кастомные версии, для системы — системную.

На вызов python3 можно повесить нужною версию с помощью update-alternatives. Это стандартная практика, легко гуглится. Но нужно помнить про то, что питон юзают системные проги. В рамках одной ветки разные версии юзать ещё ничего, а если есть pthon 3.6, а вы выберете 3.7 — могут быть неожиданные последствия. Поэтому virtualenv — наше всё 🙂

Пользователи арчика прохаванные. Они, как правило, жонглируют версиями python с помощью virtalenv как артист в цирке. Им нафиг не сдалась системная версия. Для каждого проекта создают своё окружение.

Источник

Оцените статью