рекомендации

понедельник, 9 ноября 2020 г.

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

Управление несколькими версиями 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.
------------ On Debian/Ubuntu/Linux Mint ------------ 
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev

------------ On CentOS/RHEL ------------
# yum -y install epel-release
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

------------ On Fedora 22+ ------------
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
2. Затем возьмите последнее дерево исходного кода pyenv из репозитория Github и установите его в $HOME/.pyenv, используя следующую команду.
$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv
3. Теперь вам нужно установить переменную среды PYENV_ROOT, чтобы указать путь, по которому вы установили pyenv и экспортировать его. Затем добавьте $PYENV_ROOT/bin в PATH для запуска утилиты командной строки pyenv.

Вам также необходимо включить прокладки, а также автодополнение, добавив pyenv init в свою оболочку. Сделайте все это в своем стартовом файле $HOME /.bashrc bash, как показано ниже.
$ vim $HOME/.bashrc 
Скопируйте и вставьте следующие строки в конце этого файла.
## pyenv configs
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi
4. После того, как вы внесли вышеуказанные изменения, вы можете либо перезагрузить файл $HOME/.bashrc, либо перезапустить оболочку, как показано ниже.
$ source $HOME/.bashrc
OR
$ exec "$SHELL"
Установка нескольких версий Python в Linux

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

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


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


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

9. Теперь вы можете установить локальную версию Python для каждого проекта, например, если у вас есть проект, расположенный в $HOME/python_projects/test, вы можете установить для него версию Python с помощью следующей команды:
$ cd python_projects/test
$ pyenv local 3.6.5
$ pyenv version		#view local python version for a specific project 
OR
$ pyenv versions


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

Вы можете начать с установки этого плагина с помощью следующих команд:
$ git clone https://github.com/yyuu/pyenv-virtualenv.git   $HOME/.pyenv/plugins/pyenv-virtualenv
$ source $HOME/.bashrc
11. Теперь мы создадим тестовую виртуальную среду, называемую venv_project1, в проекте под названием project1:
$ cd python_projects
$ mkdir project1
$ cd project1
$ pyenv virtualenv 3.6.5 venv_project1


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

13. Чтобы активировать virtualenv, например для venv_project1, введите следующую команду:
$ pyenv activate venv_project1
Примечание. При использовании последней версии плагина pyenv-virtualenv в первый раз, вы можете получить приведенное ниже сообщение:
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
Добавьте строку export PYENV_VIRTUALENV_DISABLE_PROMPT=1 в ваш файл $HOME/.bashrc и перезагрузите его.

14. Чтобы отключить активированный virtualenv, запустите следующую команду:
$ pyenv deactivate
Для получения дополнительной информации вы можете вывести все команды pyenv:
$ pyenv commands

Комментариев нет:

Отправить комментарий