Библиотека сайта rus-linux.net
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
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev
В CentOS/RHEL
# yum -y install epel-release # yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
В 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 или $ exec "$SHELL"
Установка нескольких версий Python в Linux
5. На этом этапе вы должны быть готовы начать использовать pyenv. Перед установкой любой версии Python вы можете просмотреть все доступные версии с помощью этой команды:
$ pynev 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 или $ 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 в первый раз, вы можете получить приведенное ниже сообщение:
Добавьте строку
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
в ваш файл $HOME/.bashrc и перезагрузите его.
14. Чтобы отключить активированный virtualenv, запустите следующую команду:
$ pyenv deactivate
Для получения дополнительной информации вы можете вывести все команды pyenv:
$ pyenv commands
Подробнее о использовании языка Python и программировании на нем вы можете узнать из следующих статей на нашем сайте:
- Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, "Язык программирования Python", 2001 г., 454 c. (pdf-файл)
- 8 лучших IDE для программирования на Python в Linux
- PyCharm: Python IDE для профессиональных разработчиков
- Архитектура системы управления пакетами в Python
- Разработка нейронной сети на языке Python
- Астрономические вычисления на языке Python
- Хакинг FFmpeg с помощью Python - часть первая
- Хакинг FFmpeg с помощью Python, часть вторая