- Pyenv — установка нескольких версий Python для разных проектов
- Что такое Pyenv?
- Как работает pyenv?
- Установка Pyenv в Linux
- Установка нескольких версий Python в Linux
- linux-notes.org
- Переключить версию python в Unix/Linux
- Менеджер версий python
- Ручной способ
- PyEnv
- Виртуальное окружение
- Как понизить версию python linux
- Теперь нам надо обновить список альтернатив Python
- Переключение между версиями Python
- Версия 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.
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 и программировании на нем вы можете узнать из следующих статей на нашем сайте:
Источник
linux-notes.org
Разработчики python не сделали поддержку версий и это не очень хорошо. Появляется ряд проблем, а именно с версиями ПО. Одни утилиты требуют версию 2.7.х, другие 3.4.х. И я хотел бы в своей статье, рассказать как можно использовать несколько версий или переключить версию python в Unix/Linux.
Переключить версию python в Unix/Linux
Сейчас по умолчанию, во многих Unix/Linux ОС используется питон 2.6. Чтобы проверить какая версия питона используется в системе, выполните:
Выполним установку python:
Так же, посмотрим:
И так, чтобы переключить версию питона, я буду использовать несколько методов.
-===СПОСОБ 1 — использование алиаса===-
Один из самых простых способов — это использовать алиасы. Открываем файл:
И, прописываем сам алиас на нужную версию питона:
Чтобы изменения вступили в силу, выполняем:
После этого, можно проверять версию:
Видно что все отлично работает.
-===СПОСОБ 2 — использование alternatives===-
Чтобы изменить версию python глобально, я воспользуюсь alternatives утилитой:
Если вывода не будет, — это будет означать, что python alternative еще не сконфигурирована. Чтобы это сделать, выполните ( взято в качестве примера):
Вышеупомянутые команды будут указывать команде alternatives для создания соответствующих символических ссылок, которые будут использоваться при выполнении команды python. Я назначил python3.6 более высокий приоритет ( цифра 2), — это означает, что если не выбрана альтернатива для python, то по умолчанию будет использоваться python3.6. После выполнения вышеуказанных команд ваша версия python должна измениться на python3.6 из-за ее более высокого приоритета.
Для переключения между вышеперечисленными версиями python теперь достаточно просто:
Чтобы удалить питон с alternatives, используем:
Как-то так! На этому у меня все, статья «Переключить версию python в Unix/Linux» завершена.
Источник
Менеджер версий python
Иногда полезно держать несколько версий python на одной машине. Допустим для разработки двух проектов нам необходима вторая и третья ветка python. Или вы поддерживаете проект который использует старую версию python.
Обычно для этого мы используем виртуальное окружение virtualenv или же обертку для него virtualenvwrapper. Об этом я рассказывать не буду, так как есть уже много подобных статей, да и в документациях к самим утилитам все очень хорошо объяснено. Достаточно только забить virtualenv или virtualenvwrapper в поисковик.
Но в дополнение к ним я хочу рассказать в этой статье про менеджер версий python. Кому любопытно прошу под кат.
Чтобы использовать несколько версий python, можно установить их вручную или воспользоваться менеджер версий. Таких есть два: pythonbrew(который более не развивается) и pyenv. Оба менеджера не поддерживают windows(pythonbrew, pyenv) так что питонистам пишущим на этой платформе, придется пока разруливать все руками, либо сделать свою утилиту для смены путей до нужных версий. Кто как справляется с данной ситуацией можете оставлять в комментариях.
Так как pythonbrew более не поддерживается в этой статье он рассмотрен не будет.
P.S. В статье приведены примеры проверенные для OS Ubuntu 12.04. При попытке повторить их, делайте поправки относительно своего дистрибутива.
Ручной способ
Для того чтобы работать с несколькими версиями питона, можно установить необходимые версии в указанный префикс. Например чтобы не мудрить с правами, установим дополнительно 2 версии python(2.7.6 и 3.3.2) в директорию пользователю:
2.7.6
для 3.3.2 делаем аналогичные операции:
Теперь можно создать виртуальное окружение чтобы использовать эти версии:
или через virtualenvwrapper:
Собственно на основании такого способа описана статья по созданию мультихостинга.
Далее если вам необходимо использовать какую-то из этих версий как python по умолчанию, то вам необходимо добавить в переменную окружения путь до интерпретатора python.
Соответственно вместо bashrc вы ставите bash_profile, zshrc, kshrc, profile в зависимости от вашей командной оболочки.
И по необходимости можно установить pip, предварительно установив setuptools.
Фух, ну вроде бы все. А теперь о том как можно сделать это проще использую менеджер версий python.
PyEnv
В общем если вы достаточно ленивы, то можно не делать всего того что описано выше а воспользоваться утилитой pyenv, которая упростит вам данное взаимодействие с окружением и путями.
Так в чем же заключается особенность этой утилиты? Вот что она может со слов автора проекта:
- Let you change the global Python version on a per-user basis.
- Provide support for per-project Python versions.
- Allow you to override the Python version with an environment variable.
- Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.
По умолчанию все версии Python будут доступны в
/.pyenv/versions/ . Изменять версии Python можно как в глобальном контексте так и в локальном(например под конкретный проект).
Как ставить pyenv хорошо описывается в инструкции. Так же у автора есть скрипт который по мимо самой pyenv ставит еще и дополнительные плагины, в том числе и для virtualenv. Есть возможность установить плагин и для virtualenvwrapper.
Прежде чем начать установку, убедитесь, что у вас установлен git:
Далее устанавливаем по инструкции:
Во втором случае установка произойдет с дополнительными плагинами.
Далее, для того чтобы все заработало, дополним наш bashrc и перезагрузим оболочку:
Для обновления утилиты или смены ее версии используем git.
Для управления версиями pyenv необходимо перейти в директорию с утилитой:
Для просмотра доступных версий:
для смены версии
Пример использования
В добавок ко всему все довольно подробно и детально расписано у автора проекта в его репозиториях на github.
Виртуальное окружение
Все, а дальше как хотите. Если вы используете 3 ветку python то для создания виртуального окружения можно воспользоваться утилитой venv которая работает из коробки. Про это есть статья на хабре. Если вы больше привыкли к virtualenv или ее обертке virtualenvwrapper то тут есть два варианта: либо поставить плагин к pyenv, или использовать их к той версии python c которой вы работаете. Соответственно если выбрать первый вариант, то созданные вами окружения будут добавлены к вашим версиям python и доступны через команду:
Добавить плагин легко, просто клонируем его из репозитория pyenv-virtualenv или pyenv-virtualenvwrapper:
Пример использования можно посмотреть в документации для pyenv-virtualenv и pyenv-virtualenvwrapper.
Все, а дальше пользуйтесь, как вам привычнее.
Пример использования
Теперь находясь в директории проекта можно запускать скрипт от нужной версии python не прилагая никаких действий. pyenv создает в директории файл .python-version который содержит в себе информацию о том какую версию python с каким окружение использовать для данного проекта.
Источник
Как понизить версию python linux
На случай если у вас в системе не установлено ещё ни одной из версий Phyton, то ставим обе версии:
Установка Phyton 2:
# apt install python
Установка Phyton 3
# apt install python3
Проверить версию Python по умолчанию, выполнив команду мы узнаем версию:
$ python —version
Python 2.7.13
После установки двух версий Python по умолчанию устанавливается версия 2.7:
Теперь нам надо обновить список альтернатив Python
Чтобы выполнить общесистемное переключение между версиями Python по умолчанию, используем команду update-alternatives . При первом вводе команда update-alternatives будет ругаться на то, что нет доступных альтернатив python:
# update-alternatives —list python
Чтобы установить альтернативы Python, сначала узнаем все доступные версии:
$ ls /usr/bin/python*
/usr/bin/python /usr/bin/python2.7 /usr/bin/python3.7 /usr/bin/python3m
/usr/bin/python2 /usr/bin/python3 /usr/bin/python3.7m
Затем обновим список альтернатив Python для каждой версии, которую мы хотим использовать. У меня это /usr/bin/python2.7 и /usr/bin/python3.7 :
# update-alternatives —install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives —install /usr/bin/python python /usr/bin/python3.5 2
Затем проверяем результат:
# update-alternatives —list python
/usr/bin/python2.7
/usr/bin/python3.7
Обратите внимание, что целое число в конце каждой команды обозначает приоритет. Более высокое число означает более высокий приоритет, и поэтому /usr/bin/python3.7 версия была установлена в автоматическом режиме по умолчанию, если не выбран другой вариант. После выполнения обеих вышеперечисленных команд ваша текущая версия Python по умолчанию имеет /usr/bin/python3.7 более высокий приоритет (2):
Чтобы в этом убедиться, проверим версию по умолчанию:
# python —version
Python 3.7.3
Переключение между версиями Python
Теперь, когда мы обновили список альтернатив Python, чтобы выполнить переключение между любыми версиями Python, нужно выполнить:
update-alternatives —config python
Есть 2 варианта для альтернативы python (предоставляет /usr/bin/python).
Выбор Путь Приор Состояние
————————————————————
0 /usr/bin/python3.7 2 автоматический режим
1 /usr/bin/python2.7 1 ручной режим
* 2 /usr/bin/python3.7 2 ручной режим
Press to keep the current choice[*], or type selection number:
и выберите подходящую версию, используя целое число выбора, как показано выше.
# python —version
Python 2.7.16
Версия Python для локального пользователя
Если вам нужно выборочно изменять версию Python только для каждого пользователя, вы можете попробовать отредактировать .bashrc файл пользователя. Например, чтобы перейти на версию Python, 3.5 выполните следующую команду
$ python —version
Python 2.7.16
$ echo ‘alias python=»/usr/bin/python3.7″‘ >>
/.bashrc
$ . .bashrc
$ python —version
Python 3.7.3
Если вам помогла статья или информация была полезной. Благодарность, не должна знать границ.
Источник