Как установить pyenv windows

Обновлено: 06.07.2024

Большинство разработчиков Python и специалист по данным уже слышали о виртуальных средах. Однако управление десятками сред, созданных для разных проектов, может быть пугающим. pyenv поможет вам упростить создание, управление и активацию виртуальных сред.

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

Основным преимуществом виртуальных сред является то, что они составляют отдельное рабочее пространство (virtualenv) для каждого из ваших проектов. Пакеты, установленные в этих рабочих пространствах, не будут мешать друг другу, поэтому вы можете безопасно устанавливать, обновлять или удалять библиотеки, не затрагивая другие проекты.

pyenv - это расширение virtualenv, которое добавляет еще несколько преимуществ:

  • возможность установки нескольких версий интерпретации Python рядом друг с другом (например, 2.7 и 3.8 или даже PyPy),
  • мирное сосуществование установленных пользователем интерпретаторов и системы Python,
  • централизованная система управления виртуальными средами,
  • автоматическая активация виртуальных сред при переходе в папку проекта.

Установка интерпретатора Python 📜

Чтобы создать виртуальную среду, вы должны сначала убедиться, что у вас установлен подходящий переводчик. Вы можете выбрать среди доступных переводчиков, которые могут быть перечислены с помощью:

pyenv install --list

(Вы можете обновить этот список с помощью cd $(pyenv root) && git pull ), а затем установите один из них с помощью:

pyenv install 3.8.0

Чтобы активировать новую среду и начать использовать Python 3.8.0:

Это должно открыть приглашение Python со знакомым экраном приветствия:

Это все замечательно, но если вы не застряли в 90-х, вы предпочтете один из современных интерфейсов Python, таких как ноутбук или IPython. Если так, пожалуйста, продолжайте читать!

Создание виртуальных сред 💻

До сих пор мы установили базовый интерпретатор Python вместе со стандартными библиотеками. Однако, чтобы сделать нашу среду обработки данных полностью функциональной, нам необходимо установить необходимые пакеты из стека обработки данных, такие как Jupyter, matplotlib или pandas.

Часто ваш проект зависит от конкретной версии пакетов (не лучшая практика, но некоторые библиотеки Python движутся быстрее, чем наши проекты). Чтобы изолировать пакеты, используемые проектом, мы можем использовать виртуальные среды. Вы создаете один, используя pyenv-virtualenv расширение (см. инструкции по установке ниже):

pyenv virtualenv 3.8.0 my-data-project

Вы можете назвать окружающую среду (здесь, my-data-project ) как вам удобно. Чтобы активировать среду, наберите:

pyenv shell my-data-project

Теперь вы готовы установить библиотеки, которые хотели бы использовать. Вы можете извлечь их из стандартного репозитория пакетов Python (PyPi также называется cheese shop) и установить в текущей среде, используя pip команда:

pip install jupyter notebook matplotlib pandas

Рекомендуется устанавливать только те библиотеки, которые вы собираетесь использовать в проекте. Если позже вы поймете, что чего-то не хватает, вы все равно можете добавить пакеты с pip install , Теперь давайте запустим сервер ноутбуков:

Это должно открыть интерфейс ноутбука Jupyter в браузере. Отлично сработано! Вы только что установили Jupyter, работающий в новейшем и лучшем выпуске Python 🎉! Обязательно опробуйте некоторые из его новых функций, таких какОператор моржаиливыражения f-строки,

Вы также можете перечислить все версии и среду Python, установленные в вашей системе, с помощью pyenv versions , который должен напечатать список как:

system Среда - это ваш системный Python по умолчанию (устанавливается вместе с вашей операционной системой). Два других были созданы с помощью pyenv.

Автоактивирующая среда 🚀

Нет ничего более расстраивающего, чем осознание того, что вы не активировали правильную виртуальную среду сразу после установки дополнительных библиотек. Это наверняка перезапишет более старые версии пакетов, установленных в текущей активированной среде, и может нарушить код вашего проекта. Несомненным преимуществом pyenv является то, что он может автоматически активировать правильную среду для каждого проекта. Предположим, что у вас есть каталог проекта с именем predict-prices в вашем домашнем каталоге. Чтобы выбрать виртуальную среду для типа проекта:

/predict-prices
pyenv local my-data-project

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

В следующий раз, когда в вашей оболочке вы перейдете в каталог, содержащий файлы вашего проекта (или одно из его подкаталогов), pyenv активирует подходящую для вас среду!

Обратите внимание, что автоактивация не будет работать, если вы ранее активировали среду, используя pyenv shell.

Использование вашей среды в IDE

Если вы не такой уж sehell, вы также можете использовать pyenv со своей любимой IDE Многие редакторы и IDE знают о средах pyenv и обнаружат их для вас. После этого вы сможете выбрать среду для вашего текущего рабочего пространства из выпадающего меню.

Но pip только для пакетов Python .

Хотя pip в основном предназначен для установки пакетов Python, он также может устанавливать программное обеспечение на других языках. Многие библиотеки Python содержат код, написанный на C или похожих языках. Например, массивы в numpy реализовать критичные к производительности операции в C. При установке этих пакетов на вашем компьютере, pip Можно скомпилировать такие расширения, но для этого требуется наличие инструментов разработчика (компиляторы, компоновщики, инструменты сборки, заголовки). Однако в наши дни большинство библиотек также предоставляют двоичные файлы (скомпилированный код) для вашей платформы (Linux, OSX, Windows), упакованные в формате, называемом wheel это может быть извлечено непосредственно из хранилища пакетов без необходимости компиляции.

Почему не Конда? 🐍

conda - еще один замечательный менеджер пакетов для Python, который нравится ученым. Во многих отношениях это похоже на комбинацию pyenv + virtualenv + pip. Он предоставляет богатый репозиторий официальных пакетов и репозиторий пользовательских пакетов под названием conda-forge , И если некоторые пакеты не доступны в этих репозиториях, вы все равно можете установить их, используя pip , Преимущество conda заключается в том, что он мультиплатформенный, не зависит от языка и предоставляет все необходимые инструменты для сборки и разделяемые библиотеки. Недостатком является то, что он требует установки отдельной библиотеки под названием miniconda , Хорошая новость заключается в том, что установить миниконду в pyenv так же легко, как и в средах на основе пипов:

pyenv install miniconda3-latest

Установка

Чтобы установить pyenv, выполните несколько простых шагов. Для начала, клонируйте репозиторий pyenv git в свой домашний каталог (pyenv поддерживается только для OSX и Linux, в Windows вам нужно использоватьПодсистема Windows для Linux):

Затем добавьте pyenv в системный путь:

Копирование вышеуказанных строк должно сработать, но если вам нужны более подробные объяснения, обратитесь кофициальный гид,

Я также использую расширение для pyenv, которое управляет виртуальными средами, называемое pyenv-virtualenv. Чтобы установить его, просто клонируйте репозиторий git:

Чтобы включить автоматическую активацию, скопируйте эту команду в свой терминал:

Теперь вы можете выйти из сеанса и снова войти в систему, чтобы все было установлено.

Иногда полезно держать несколько версий 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.

/.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 с каким окружение использовать для данного проекта.

Перед установкой pyenv нужно установить зависимости

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

exp1_amd64.deb . Unpacking llvm-runtime (1:10.0-50

exp1_amd64.deb . Unpacking llvm (1:10.0-50

Если не установлен curl выполните

sudo apt-get install curl

/.bashrc: eval "$(pyenv virtualenv-init -)"

.bashrc

Из инструкции следует, что нужно обновить файл .bashrc

export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"

Если появилось предупреждение

WARNING: `pyenv init -` no longer sets PATH. Run `pyenv init` to see the necessary changes to make to your configuration.

eval "$(pyenv init -)"

eval "$(pyenv init --path)"

Инструкция

Изучить версию pyenv и доступные команды можно выполнив

Установить новый Python

Список доступных для установки через pyenv версий можно получить выполнив

pyenv install --list

Версий очень много, поэтому советую воспользоваться grep

pyenv install --list | grep "3\.[8|9]"

Установить нужную версию (я выбрал 3.9.5) можно командой

pyenv isntall 3.9.5

Настройка после установки

После установки по умолчанию будет по прежнему системный Pyhton 2.7

Python 2.7.18 (default, Mar 8 2021, 13:02:45) [GCC 9.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information.

total 12 drwxr-xr-x 3 andrei urnsu 4096 Jun 15 15:36 ./ drwxr-xr-x 13 andrei urnsu 4096 Jun 15 15:12 ../ drwxr-xr-x 6 andrei urnsu 4096 Jun 15 15:32 3.9.5/

system * 3.9.5 (set by /home/andrei/.pyenv/version)

pyenv which python

pyenv virtualenv

Создать новое виртуальное окружение

pyenv virtualenv 3.9.5 sdk_pyenv

Проверить создалось ли окружение можно выполнив

Активировать окружение можно выполнив

pyenv local sdk_pyenv

После активации окружения в текущей директории будет создан файл .python-version

Каждый проект, над которым мы работаем, использует разные пакеты и может даже быть совместим только с одной версией Python.

Выполнение чего-либо постоянного всегда требует автоматизации. В этой статье мы рассмотрим, как direnv и pyenv могут помочь нам в этом.

Как примечание, некоторые современные IDE уже автоматизировали этот процесс. Например, PyCharm создаст виртуальную среду при инициализации проекта:

PyCharm

Хотя автоматизация IDE всех этих шагов является большим преимуществом, вы должны владеть более универсальным решение независимым от IDE.

Проблемы virtualenv

Вот шаги, которые мы должны предпринять, чтобы попробовать скрипт на своей машине:

Затем нам нужно создать виртуальную среду и установить все пакеты, которые использует скрипт:

И только тогда мы можем выполнить скрипт:

Мы создали виртуальную среду и сохранили ее в корневой папке нашего проекта. Находясь в этой папке, мы должны еще активировать среду с помощью команды source.

Когда мы закончим работу, нам нужно покинуть виртуальную среду, выполнив deactivate:

Все эти шаги являются нашей ответственностью. И при большом количестве проектов во всем этом легко запутаться и когда нибудь что нибудь забыть. Сколько раз вы забывали активировать среду и случайно устанавливали пакеты глобально!

Давайте посмотрим, как direnv поможет нам автоматизировать этот процесс.

direnv

direnv был сделан главным образом для загрузки переменных среды, в зависимости от текущего каталога, и имеет расширение для многих оболочек.

В этом примере мы будем использовать bash, но direnv также поддерживает много других оболочек. И что более важно для нас, он позволяет нам управлять виртуальными средами Python (Python Virtual Environments).

Для его установки нужно запустить установщик bash, который они предоставляют. Мы могли бы использовать менеджер пакетов нашего дистрибутива, но установщик bash обеспечит установку последней доступной версии:

Теперь нам нужно подключить direnv к bash. Для этого отредактируем

/.bashrc и затем перезагрузим его:

Таким образом, direnv свяжется с оболочкой и будет выполняться всегда перед каждым запуском оболочки. Мы никогда не заметим, что он будет работать в фоне.

direnv проверит, нужно ли что-то загружать в текущую папку. Он проверяет наличие файла с именем .envrc, с инструкциями о том, что должно быть загружено.

Чтобы загрузить виртуальную среду Python, нужно запустить команду layout, а и указать нужную версию Python:

Или, если мы хотим использовать Python 3:

Запуск этих команд скажет direnv искать исполняемый файл python или python3 по систему пути.

Как только мы создадим файл .envrc, нас предупредят, что нам нужно разрешить direnv доступ к этой папке. Давайте сделаем это прямо сейчас:

Как мы увидим в результате, будет создана новая виртуальная среда. Приглашение (prompt) не изменяется, поэтому мы не увидим название среды, написанное в начале командной строки.

Теперь мы можем установить нужные нам пакеты, как мы это делаем обычно:

direnv будет молча активировать среду в фоновом режиме. Всякий раз, когда мы выходим из каталога, среда будет деактивирована:

Давайте теперь предположим, что наш скрипт pyweather требует очень определенной версии Python.

pyenv

Давайте начнем с установки pyenv:

И нужно убедится, что pyenv будет доступен из нашего терминала:

Теперь давайте предположим, что нашему скрипту pyweather требуется очень специфическая версия Python, 3.6.2.

Во-первых, нам нужно установить эту версию Python:

И теперь мы можем настроить ваш проект для использования конкретной версии:

Мы можем проверить результат, проверив версию Python в среде:

Если нам когда-либо потребуется изменить версию Python, нам будет достаточно изменить layout в файле .envrc.

Благодаря обеим утилитам мы можем изменить layout на любую версию Python, и наша виртуальная среда будет сразу обновлена.

Еще одним преимуществом использования direnv и pyenv является то, что мы можем перенести версию нашего файла .envrc в наш репозитории проектов.

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

Заключение

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

Установка обеих утилит может вызвать сложности, но после того, как вы это сделаем, вы сможете сэкономим много времени. И у вас также всегда будет уверенность, что вы работаем с правильной виртуальной средой и версией Python

Читайте также: