Установка нескольких версий Python в Windows с помощью Virtualenv
Если у вас уже есть некоторые виртуальные среды или вы используете Anaconda, убедитесь, что следующие шаги выполняются извне всех этих сред.
2. Установите Python
Вы можете скачать Python с официального сайта, например, python3.7.3 здесь.
Файл, который вы должны загрузить, называется Windows x86–64 executable installer , или, Windows x86 executable installer если по какой-то причине вы используете 32-битные окна.
После завершения загрузки откройте исполняемый файл и появится приглашение для установки.
- Вы НЕ хотите добавлять новый python в вашу PATH, поскольку у нас будет несколько версий python на одном компьютере, и мы хотим, чтобы каждое приложение знало только одну версию python.
- Либо используйте предложенное по умолчанию местоположение для нового питона, либо укажите местоположение по вашему выбору. В любом случае, запомните это место, и давайте теперь будем обозначать его C:\ \Python37 .
3. Создать virtualenv
Откройте Command Prompt , или, если вы используете Anaconda, откройте Anaconda Prompt .
Решите , где вы хотите хранить virtualenv, например,
C:\Users\ \Anaconda3\envs\ .
virtualenv C:\Users\\Anaconda3\envs\ -p C:\\Python37\python.exe
4. Обновите интерпретатор PyCharm
Если вы используете PyCharm, откройте проект, над которым вы хотели бы поработать (то есть / будет написано с новой версией Python), и затем File -> Settings -> Project -> Project Interpreter нажмите значок шестеренки, а затем Add.. .

Откроется окно с подсказкой, которое позволит вам определить нового интерпретатора:

Предполагая, что вы используете проверку кода, вам может потребоваться указать PyCharm, какую версию Python проверять. Перейдите File -> Settings-> Editor -> Inspections -> Python -> Code compatibility Inspection , убедитесь, что поле вверху указывает на конкретный проект, над которым вы работаете, и отметьте поле вашей версии Python.

Если вы не видите свою версию Python в списке параметров, возможно настала пора для обновления PyCharm . да, со мной тоже случилось .
5. Установите пакеты
В настоящее время ваш virtualenv содержит только важные пакеты, pip и setuptools . Чтобы установить больше пакетов:
- Откройте Command Prompt или Anaconda Prompt , и активируйте свой virtualenv, введя
C:\Users\ \Anaconda3\envs\ \activate.bat - Используйте pip для установки пакетов, как вы обычно делаете.
- Деактивировать свой virtualenv, введя deactivate .
Установка двух версий Python
Здравствуйте.
Подскажите пожалуйста, как лучше всего установить 2 версии Python.
Мне советовали скопировать python.exe, вставить его и переименовать старый файл, чтобы в папке появились python.exe и python2.exe. С третьим также, только python3.exe.
Вопрос в том, что все модули pip и прочие, остаются.
Как это решить?
Заранее благодарен!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Смена версий Python
Вечер добрый 🙂 использую Linux Mint 17.3 Rosa. И по умолчанию в системе стоит Питон2.7. Как.
Не работает отладка в Visual Studio Code (по F5) после установки двух версий Python
Всем привет. Возникла необходимость установить версию Python 3.7.2(x64)(на диск E:\) на рабочее.

Использование разных версий Python
Приветствую! Имею на борту две разных версии "змеюки"(2.7.3, 3.6.2) По умолчанию в cmd.

Установка двух версий Flash Player
Добрый день Подскажите, пожалуйста, можно ли установить одновременно Flash Player и Flash Player.
Установка двух разных версий Visual Studio
Здравствуйте. Использую Visual Studio 2019 Community. Понадобилось что-бы приложение запускалось.
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
Как обычно. Сначала устанавливаете одну, потом вторую. В разные каталоги, это важно.
Один только python.exe, конечно, копировать никуда и надо. И уж тем более — вставлять.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Дополню комментарий dondublon.
Вместе с обновленными версиями инсталлера python поставляется специальный лаунчер, позволяющий удобно работать с несколькими версиями python под мастдайкой.
Посмотреть примеры и т д можешь тут https://docs.python.org/3/usin. or-windows.
Сообщение от jonikster 
Вопрос в том, что все модули pip и прочие, остаются.
Ни каких особенностей тут особо нет. Просто вызывай pip конкретной версии (в папке scripts есть exe pip, которые в своем названии имеют версию python для которой этот pip будет ставить все) и библиотека будет ставится для нужной версии python.
Регистрация: 26.10.2014
Сообщений: 1,108
т.е в python 2 переименовать pip в pip2, в python 3 в pip3 и т.д?
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
jonikster, Ничего не надо переименовывать, все есть из коробки.
Регистрация: 26.10.2014
Сообщений: 1,108
ну а как тогда командная строка поймёт чей pip я запрашиваю
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
а что, из коробки нет pip2/pip3?
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Сообщение от jonikster 
ну а как тогда командная строка поймёт чей pip я запрашиваю
Блин, опять двадцать пять, зациклился чтоль? Я тебе это объяснял же уже!
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
Сообщение от jonikster 
ну а как тогда командная строка поймёт чей pip я запрашиваю
В каталоге с Python3 есть файлы: pip, pip3, pip3.6. В каталоге с Python2 — pip, pip2, pip2.7. Вызываешь файл, в имени которого есть версия — pip3 или pip2, неоднозначности не возникает.
alex925, да, сейчас бы незрячим скриншотами объяснять.
Регистрация: 26.10.2014
Сообщений: 1,108
хм, там вроде не было pip2 и pip3, ну ок, гляну.
Регистрация: 24.11.2017
Сообщений: 5
Ты просто качаешь установщик питона нужной версии
Том качаешь еще один, в итоге имеем
Crogram files/python27
Crogram files/python34
Чтобы установить библиотеки набираешь
Если хочешь в 3.4
С:/python34/Scripts/pip3.4.exe install numpy
Если в 27 то
C:/Python27/ а дальше незнаю где там пип
Ну ты вобщем меня понял
А если в пичарм хочешь выбрать другую версию питгна, т.е другой интерпретатор
То заходишь в файл > settings > project settings и там сверху можно будет выбрать
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Установка разных версий The Sims 3
здравствуйте! надеюсь,что Вы мне поможете:) дело в том,что вот у меня,например,были симс 3 (6 в.
Установка последних версий Apache 2.4.6
Здравствуйте! Использую Linux Mint (Ubuntu кароче. =)) Непойму почему в репозитории не.

Установка новых версий на ПК с предустановленным Windows
Знакомый просил установить Windows 11 на ПК с предустановленной Windows 8.1 с одним языком. Я хотел.

Установка новых версий на ПК с предустановленным Windows
Я попробовал установить Windows 10 на ПК с предустановленной Windows 8.1 с одним языком. Я хотел.
Установка старых версий PHP, MySQL
Здравствуйте. Нужно установить CMS, поддерживающую лишь старые версии компонентов. В наличии.
Несколько версий Python(Ubuntu)
Недавно поставил Ubuntu. Позже установил python 3(sudo apt-get install python3(если память не.
Как установить обе версии Python 2.x и 3.x на windows7
Планирую вести разработку на обеих версиях Python 2.x и 3.x на windows7. Подскажите пожалуйста, как можно без конфликта версий их установить и переключаться между ними? Спасибо!
Отслеживать
задан 6 фев 2017 в 14:00
21 1 1 серебряный знак 2 2 бронзовых знака
достаточно просто установить 2 версии Python, и в Windows можно выбрать как запустить скрипт и можно бывать Python 2 или 3
6 фев 2017 в 14:10
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Поставили 2.x версию, поставили 3.x версию.
После установки убедитесь, что py.exe используется для запуска *.py файлов (и pyw.exe для *.pyw ):
С:\> assoc .py С:\> ftype Python.File
Если хотите запускать команда.py файл, как просто команда , то добавьте .py расширение в %PATHEXT% переменную окружения.
Если хочется, чтобы выбранная версия Питона для запуска использовалась, то добавьте shebang на самом верху Питон-скрипта. К примеру, чтобы выбрать Python 2.x:
#!/usr/bin/env python2
Чтобы выбрать Python 3.x
#!/usr/bin/env python3
Можно также явно указывать желаемую версию при старте:
C:\> py -3 \путь\команда.py
py -3.5 -m pip install win-unicode-console запустит команду для Python 3.5 (к примеру, если у вас как Python 3.6 так и 3.5) установлены.
Отслеживать
ответ дан 6 фев 2017 в 15:31
52.2k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков
- Установить нужные версии Python, например
- 2.7.13
- 3.5.3
- 3.6.0
При установке поставить галочку Add Python x.y to PATH , если требуется доступ к интерпретаторам в командной строке и не снимать галочку с установки pip при кастомизации.

- в C:\Python27 из python.exe создать копию python27.exe ;
- в C:\Users\\AppData\Local\Programs\Python\Python35 из python.exe создать копию python35.exe ;
- в C:\Users\\AppData\Local\Programs\Python\Python35 из python.exe создать копию python35.exe ;
исходные python.exe оставить.
- D:\>python27 -V Python 2.7.13
- D:\>python35 -V Python 3.5.3
- D:\>python36 -V Python 3.6.0
- D:\>python27 script.py
- D:\>python35 script.py
- D:\>python36 script.py
- pip2.7 install
- pip3.5 install
- pip3.6 install
эти экземпляры pip устанавливаются сразу с Python , их вручную копировать не нужно.
Как установить две версии python на windows
Некоторые программные инструменты для своей работы требуют наличие установки определенной версии Python (например, так у меня получилось с компилятором NPU для процессора GX8002 []). Утилита pyenv позволяет держать на компьютере несколько версий Python и легко переключаться между ними. Даже если в системе уже установлен Python, стоит установить pyenv, чтобы можно было легко опробовать новые языковые функции альтернативных версий Python.
System Python. Системный Python это Python, установленный в операционной системе. Если вы находитесь на Mac или Linux, то по умолчанию, когда вы набираете python в вашем терминале, вы как раз запускаете этот системный Python.
Так почему бы не использовать этот системный Python? Ведь Python уже устанавливается вместе с операционной системой Linux. Это можно увидеть с помощью команды which :
$ which python /usr/bin/python
Здесь python доступен для всех пользователей, о чем свидетельствует его место расположения /usr/bin/python. Версию Python можно узнать командой python -V , и может сложиться ситуация, когда это не та версия, которая нужна:
$ python -V Python 2.7.12
Чтобы установить пакет в системный Python, вам нужно запускать sudo pip install . Это установит пакет Python глобально, что создаст проблему, если другой пользователь захочет установить более старую версию пакета.
Проблемы с несколькими версиями одного и того же пакета нарастают, и часто проявляются в самый неожиданный момент. Вдруг ни с того ни с сего популярный и стабильный пакет внезапно нарушает стабильную работу системы. После нескольких часов попыток устранить проблему и гугления вы можете обнаружить, что установили не ту версию зависимости, и потеряли на это целый день.
Даже если ваша версия Python установлена в /usr/local/bin/python3, то это все равно не гарантирует безопасности. Вы все еще можете столкнуться с описанными выше проблемами.
Кроме того, у вас нет большого контроля на дтем, какая версия Python будет установлена вместе с вашей операционной системой Linux. Если вы хотите использовать последнюю версию Python, и ваша система например Ubuntu, то вам может не повезти. Версии Python по умолчанию могут быть слишком старые, т. е. придется ждать новую версию операционной системы.
И наконец, некоторые операционные системы для своей работы могут использовать упакованную версию Python. Например yum для своей работы использует Python. Если вы установите новую версию Python, и не позабоитесь о том, чтобы правильно установить его в свое пространство пользователя, то это может серьезно нарушить работу операционной системы.
Package Manager. Следующее, на что надо обратить внимание — менеджеры пакетов, такие как apt , yum , brew или port . Так или иначе, именно с их помощь вы устанавливаете в систему большинство пакетов. К сожалению, при использовании менеджеров пакетов вы столкнетесь с теми же самыми проблемами.
По умолчанию менеджеры пакетов как правило устанавливает свои пакеты в глобальное системное пространство вместо рабочего пространства пользователя. Эти пакеты системного уровня загрязняют вашу среду разработки, и затрудняют совместную работу с другими пользователями.
И опять у вас нет контроля, какую версию Python вы можете установить. Некоторые репозитории предоставляют выбор, но по умолчанию вы столкнетесь любой версией Python, которую выбрал поставщик ПО или предпочитает техподдержка вашей организации.
Даже если вы устанавливаете Python из менеджера пакетов, подумайте, что произойдет, если вы пишете пакет и хотите поддерживать и тестировать Python версий 3.4 — 3.7.
Что произойдет, когда вы набираете в системе команду python3? Как легко вы можете переключиться между разными версиями? Если захотите использовать PyPy, Jython или Miniconda, то скорее всего с менеджером пакетов вам не повезет.
С учетом этих ограничений давайте рассмотрим критерии, которые позволят просто и гибко устанавливать версии Python и управлять ими:
1. Установка Python в ваше пространство пользователя.
2. Установка нескольких версий Python.
3. Возможность указать именно ту версию Python, которая нужна.
4. Переключение между установленными версиями.
Утилита pyenv даст вам все эти возможности, и даже больше.
[Установка pyenv]
Перед установкой самой утилиты pyenv понадобится обеспечить некоторые специфичные для операционной системы зависимости. Эти зависимости в основном утилиты разработки, написанные на C, и они потребуются, потому что pyenv устанавливает Python путем сборки его из исходного кода. Здесь мы рассмотрим наиболее распространенные способы установки этих зависимостей.
Примечание: утилита pyenv изначально не поддерживала Windows. Однако с некоторых пор появилась базовая поддержка со стороны проекта pyenv-win. Если вы используете Windows, попробуйте pyenv-win.
Зависимости сборки. Утилита pyenv выполняет сборку выбранной версии Python из исходного кода, т. е. вам нужно собрать зависимости, которые фактически использует pyenv. Зависимости сборки специфичны для используемой платформы. Если вы используете Ubuntu/Debian, то для установки зависимостей введите команду (эта команда использует Apt для установки всех зависимостей сборки):
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
Если при запуске этой команды столкнулись с ошибкой «Unable to locate package python-openssl», то удалите этот пакет из командной строки, и запустите её заново. С такой ошибкой я столкнулся на Raspberry Pi 2 b.
Если вы используете Fedora/CentOS/RHEL, то для установики зависимостей сборки используйте yum:
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite \ sqlite-devel openssl-devel xz xz-devel libffi-devel
Под macOS можно использовать команду brew (сработает менеджер пакетов Homebrew):
$ brew install openssl readline sqlite3 xz zlib
Совет: когда работает Mojave или более свежая версия (10.14+) то вам также понадобится установить дополнительные заголовки SDK:
$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Если используется openSUSE, то запустите команду:
$ zypper in zlib-devel bzip2 libbz2-devel libffi-devel \ libopenssl-devel readline-devel sqlite3 sqlite3-devel xz xz-devel
И наконец, для пользователей Alpine можно ввести команду (в качестве менеджера пакетов используется apk):
$ apk add libffi-dev ncurses-dev openssl-dev readline-dev \ tk-dev xz-dev zlib-dev
Установка pyenv с помощью pyenv-installer. После того, как все зависимости были установлены, воспользуйтесь инсталлятором pyenv с помощью команды:
$ curl https://pyenv.run | bash
Эта команда установит pyenv вместе с некоторыми полезными плагинами:
pyenv : само приложение pyenv.
pyenv-virtualenv : плагин для pyenv и виртуальных рабочих окружений.
pyenv-update : плагин для обновления pyenv.
pyenv-doctor : плагин для проверки, что установлена pyenv и зависимости сборки.
pyenv-which-ext : плагин для автоматического поиска системных команд.
Примечание: показанная выше команда curl делает то же самое, что и загрузка срипта pyenv-installer и его локальный запуск. Так что если вы захотите узнать, что на самом деле будет происходить при установке, то можете посмотреть на содержимое этого скрипта. Альтернативно, если вы не хотите запускать этот скрипт, то можете попробовать выполнить инструкции по установке вручную.
При запуске команды curl https://pyenv.run | bash вы можете столкнуться с ошибкой наподобие следующей:
$ curl https://pyenv.run | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (60) SSL certificate problem: self signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Эта ошибка легко исправляется, если добавить в командную строку опцию -k, которая отключает проверку сертификата. Для этого откройте ссылку https://pyenv.run, вы увидите текст скрипта, который надо подправить:
$ wget —no-check-certificate https://pyenv.run
$ mv index.html setup-pyenv.sh
Мы получим файл вот такого содержимого:
#!/bin/bash
# Usage: curl https://pyenv.run | bash
# index_main() set -e curl -s -S -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
> index_main
Добавьте в этом скрипте после curl опцию -k:
curl -k -s -S -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
После этого добавьте к скрипту атрибут, разрешающий выполнение, и запустите его:
$ chmod +x setup-pyenv.sh $ ./setup-pyenv.sh
После завершения работы скрипта вы увидите что-то наподобие следующего:
WARNING: seems you still have not added 'pyenv' to the load path.
Load pyenv automatically by adding the following to ~/.bashrc:
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Здесь даны указания, какие строчки надо добавить в профиль настройки рабочего окружения по умолчанию (файл ~/.bashrc). Этот вывод будет зависеть от вашего шелла. Вам нужно последовать этим указаниям, чтобы добавить pyenv в пути поиска запускаемых программ (переменная окружения PATH), и инициализировать pyenv/pyenv-virtualenv auto completion. Например, на Ubuntu для настройки терминала bash добавтье в конец файла ~/.bashrc следующие строки:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
После того, как это было сделано, нужно перезагрузить ваш шелл (или просто закройте окно терминала и снова откройте его):
$ exec "$SHELL"
На этом все. Теперь у вас есть готовая к работе утилита pyenv и её плагины.
[Использование pyenv для установки Python]
Следующим шагом после установки pyenv будет установка нужной версии Python. Вы можете выбрать и установить множество версий Python. Например, если ван нужно посмотреть, какие есть версии Python от 3.6 до 3.8, то можете ввести команду:
$ pyenv install --list | grep " 3\.[678]" 3.6.0 3.6-dev 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7-dev 3.7.1 3.7.2 3.8-dev
Подобным образом, если нам надо увидеть все версии Jython:
$ pyenv install --list | grep "jython" jython-dev jython-2.5.0 jython-2.5-dev jython-2.5.1 jython-2.5.2 jython-2.5.3 jython-2.5.4-rc1 jython-2.7.0 jython-2.7.1
После того, как вы определились с версией Python, которую хотите установить, введите команду с указанием версии. Например, для установки Python 3.6.15:
$ pyenv install -v 3.6.15
Поскольку эта команда установит Python путем сборки из исходников, то процесс может занять некоторое время. Если вы не хотите видеть вывод процесса установки, то не указывайте ключ -v:
$ pyenv install 3.6.15
Таким же образом можно установить несколько версий Python:
$ pyenv install 2.7.18
Совет для профи: если вы используете pyenv в течение некоторого времени, и не обнаружили версию Python, которую хотели бы установить, то может понадобиться выполнить команду pyenv update, чтобы получить доступ к последним версиям Python.
Дополнительную информацию по pyenv и решению проблем см. в репозитории [4].
Каталог установки. Как уже упоминалось, утилита pyenv работает путем сборки Python из исходников. Все собранные таким способом версии она сохраняет в свой корневой каталог ~/.pyenv/versions/, например:
$ ls ~/.pyenv/versions/ 2.7.15 3.6.8 3.8-dev
Вывод этой команды показывает каталоги 2.7.15, 3.6.8, 3.8-dev, где установлены соответствующие версии Python. Любую из этих установленных версий можно удалить командой rm . Например, если нужно удалить Python 2.7.15:
$ rm -rf ~/.pyenv/versions/2.7.15
Также есть эквивалентная команда pyenv uninstall , с помощью которой можно удалить указанную версию:
$ pyenv uninstall 2.7.15
Управление версиями Python. Следующая команда показывает, какие версии Python у вас установлены:
$ pyenv versions * system (set by /home/имяпользователя/.pyenv/version) 2.7.15 3.6.8 3.8-dev
Здесь * указывает, что в настоящий момент активна системная версия Python. Также это показывает, что системная версия установлена файлом, который находится в корневом каталоге pyenv. Т. е. по умолчанию все еще используется ваша системная версия Python:
$ python -V Python 2.7.12
Если вы попробуете это проверить с помощью команды which , то увидите:
$ which python /home/имяпользователя/.pyenv/shims/python
Такое поведение может показаться необычным, но так работает pyenv. Утилита pyenv вставляет сама себя в вашу переменную окружения PATH, и с точки зрения операционной системы это вызываемый исполняемый бинарник. Если вы хотите увидеть реальный путь, то выполните команду:
$ pyenv which python /usr/bin/python
Например, если вы хотите переключиться на другую версию Python, то используйте команду global :
$ pyenv global 2.7.15 $ python -V Python 2.7.15
$ pyenv versions system * 2.7.15 (set by /home/имяпользователя/.pyenv/version) 3.6.8 3.8-dev
Совет для профи: хорошим способом проверить, что только что установленная версия Python работает правильно, будет запуск встроенного теста:
$ pyenv global 3.8-dev
$ python -m test
Эта команда запустит набор внутренних тестов Python, которые проверят вашу инсталляцию.
Если захотите вернуться обратно на системную версию Python, которая была по умолчанию:
$ pyenv global system $ python -V Python 2.7.12
Команда pyenv global дает возможность непринужденно переключаться между разными версиями Python.
[Обзор команд pyenv]
Вот так можно посмотреть список доступных команд:
$ pyenv commands --version activate commands completions deactivate doctor exec global help . virtualenvs whence which
Каждая команда из этого списка с помощью флага —help позволяет получить более подробную информацию о команде. Например, если нужно получить информацию о команде shims :
$ pyenv shims --help Usage: pyenv shims [--short] List existing pyenv shims
install . Эту команду мы уже рассматривали выше. Она позволяет установить определенную версию Python. Например, если вы хотите установить Python 3.6.8, запустите:
$ pyenv install 3.6.8
В консоли будет отображен процесс загрузки и установки Python. Вот некоторые флаги, которые могут оказаться полезными:
| Флаг | Описание |
| -l (—list) | Перечислит все доступные для установки версии Python. |
| -g (—debug) | Выполнит сборку отладочной верси Python. |
| -v (—verbose) | Подробный режим: будет выводить состояние процесса компиляции в stdout. |
versions . Команда versions покажет все установленные в настоящий момент версии Python:
$ pyenv versions * system (set by /home/имяпользователя/.pyenv/version) 2.7.15 3.6.8 3.8-dev
Этот вывод показывает не только установленные верисии 2.7.15, 3.6.8, 3.8-dev, но также и ваш установленный системный Python, и звездочка показывает, что системный Python в настоящий момент активный. Если вас интересует только текущая активная версия, то используйте команду version :
$ pyenv version system (set by /home/имяпользователя/.pyenv/version)
Эта команда подобна команде versions, но отличается тем, что показывает только текущую активную версию.
which . Команда which помогает определить полный путь до системных исполняемых файлов. Поскольку pyenv работает через прокладки (shims), команда which позволит вам увидеть полный путь до исполняемого файла, который запускает pyenv. Например, если нужно увидеть, где находится запускаемая команда pip, то запустите команду:
$ pyenv which pip /home/имяпользователя/.pyenv/versions/3.6.8/bin/pip
В выводе будет показан полный системный путь до pip.
global . Команда global установит глобальную версию Python. Это может быть отменено другими командами, однако полезно, чтобы гарантировать, что по умолчанию использутся определенная версия Python. Если вы хотите использовать по умолчанию Python 3.6.8, то запустите команду:
$ pyenv global 3.6.8
Эта команда установит ~/.pyenv/version на 3.6.8. Для дополнительной информации см. далее «Как указать вашу версию Python».
local . Команда local часто используется для установки версии Python, специфичной для приложения. Например следующая команда:
$ pyenv local 2.7.15
.. создаст файл .python-version в вашей текущей директории. Если в вашем рабочем окружении активна pyenv, то этот файл будет автоматически для текущего каталога активировать версию Python 2.7.15.
shell . Команда shell используется для установки версии Python, специфичной для шелла. Например, если вы хотите протестить версию Python 3.8-dev, то запустите команду:
$ pyenv shell 3.8-dev
Эта команда активирует версию, указанную путем установки переменной окружения PYENV_VERSION. Эта команда перезапишет любые настройки приложения или глобальные настройки. Если вы хотите деактивировать версию, то можете использовать флаг —unset.
[Как указать вашу версию Python]
Одна из наиболее запутанных частей pyenv заключается в том, как именно разрешается команда python, и какие команды можно использовать для изменения этого разрешения. Как было показано выше, существует 3 способа модифицировать используюмую версию python (комадами global, local и shell). Как эти команды взаимодействую друг с другом?
Порядок поиска и разрешения команд выглядит примерно так:

Эта пирамида означает, что чтение происходит сверху вниз. Будет использовано первое, что pyenv сможет найти. Рассмотрим простой пример:
$ pyenv versions * system (set by /home/имяпользователя/.pyenv/version) 2.7.15 3.6.8 3.8-dev
Здесь используется системный Python, что обозначено звездочкой *. Для выполнения следующего наиболее глобального параметра используется global :
$ pyenv global 3.6.8 $ pyenv versions system 2.7.15 * 3.6.8 (set by /home/имяпользователя/.pyenv/version) 3.8-dev
Здесь видно, что pyenv хочет использовать 3.6.8 в качестве версии Python. Это также показывает, где находится файл версии. Можно также посмотреть содержимое этого файла:
$ cat ~/.pyenv/version 3.6.8
Давайте теперь создадим файл .python-version командой local :
$ pyenv local 2.7.15 $ pyenv versions system * 2.7.15 (set by /home/имяпользователя/.python-version) 3.6.8 3.8-dev $ ls -a . .. .python-version $ cat .python-version 2.7.15
Здесь снова pyenv указывает, как разрешается наша команда python. На этот раз это происходит из ~/.python-version. Обратите внимание, что поиск файла .python-version является рекурсивным:
$ mkdir subdirectory $ cd subdirectory $ ls -la # здесь нет файла .python-version . .. $ pyenv versions system * 2.7.15 (set by /home/имяпользователя/.python-version) 3.6.8 3.8-dev
Несмотря на то, в подкаталоге subdirectory нет файла .python-version, версия все еще устанавливается на 2.7.15 потому что файл .python-version присутствует в родительской директории для папки subdirectory.
И наконец, можно установить версию Python командой shell :
$ pyenv shell 3.8-dev $ pyenv versions system 2.7.15 3.6.8 * 3.8-dev (set by PYENV_VERSION environment variable)
Все это делается установкой переменной окружения PYENV_VERSION :
$ echo $PYENV_VERSION 3.8-dev
Если вы слишком перегружены этими опциями, то см. описание процесса управления этими файлами «Работа с несколькими рабочими окружениями», в основном используя local.
[Виртуальные рабочие окружения и pyenv]
Virtual Environment большая часть системы управления инсталляциями и приложениями Python. Если вы раньше ничего не слышали про виртуальные рабочие окружения, см. букварь [5].
Виртуальные рабочие окружения и pyenv образуют идеальную интеграцию. У pyenv есть отличный плагин pyenv-virtualenv, который сильно облегчает работу с несколькимиверсиями Python и несколькими виртуальными окружениями. Если вы сходу не разобрались, в чем разница между pyenv, pyenv-virtualenv и инструментами наподобие virtualenv или venv, то не волнуйтесь. Вы не один такой.
Вот что вам следует знать:
• pyenv управляет несколькими версиями самого Python.
• virtualenv/venv управляет виртуальными окружениями для определенной версии Python.
• pyenv-virtualenv управляет виртуальными окружениями для различных версий Python.
Если вы фанатичный пользователь virtualenv или venv, не беспокойтесь: pyenv прекрасно уживается с ними обоими. Фактически вы можете придерживаться старого рабочего процесса, который вам так нравится, но на самом деле pyenv-virtualenv вероятно обогатила бы ваш опыт по переключению между несколькими окружениями, которые требуют разные версии Python.
Хорошая новость: как только вы запустили скрипт pyenv-installer для установки pyenv, одновременно была установлена и готова к работе утилита pyenv-virtualenv.
[Создание виртуальных рабочих окружений]
Виртуальное окружение создается одной командой:
Технически указывать версию python необязательно, но это лучше указывать, чтобы иметь четкое представление, какая версия Python используется в виртуальном окружении.
Здесь имя_окружения это просто удобное для вас имя, помогающее отделять одно виртуальное окружение от другого. Хорошей практикой будет давать такое же имя для ваших окружений, что и имя проекта. Например, если вы работаете над проектом myproject, и хотите в нем работать с Python 3.6.8, то запустите команду:
$ pyenv virtualenv 3.6.8 myproject
Вывод команды покажет, что устанавливается несклько дополнительных пакетов Python, а именно wheel, pip и setuptools. Это делается строго для удобства, и просто более полно настраивает каждое виртуальное рабочее окружение.
Активация ваших версий. После того, как вы создали свое виртуальное рабочее окружение, следующим шагом должна быть его активация. Это делается командой local :
$ pyenv local myproject
Здесь вы опять видите уже знакомую команду pyenv local, но на этот раз вместо указания версии Python вы указываете окружение. Эта команда создаст файл .python-version в вашей текущей рабочей директории, и потому что вы запустили eval «$(pyenv virtualenv-init -)» в своем рабочем окружении, виртуальное окружение автоматически активируется.
Это можно проверить, запустив команду:
$ pyenv which python /home/имяпользователя/.pyenv/versions/myproject/bin/python
Здесь можно видеть, что была создана новая версия с именем myproject, и исполняемая команда python указывает на эту версию. Если вы посмотрите на любой исполняемый файл, который предоставляет эта среда, то увидите то же самое. Например для pip:
$ pyenv which pip /home/имяпользователя/.pyenv/versions/myproject/bin/pip
Если вы не сконфигурировали команду «$(pyenv virtualenv-init -)» для запуска в вашем шелл (редактированием файла ~/.bashrc), то запустите свой шелл, и в нем можете вручую активировать и деактивировать свои версии Python:
$ pyenv activate $ pyenv deactivate
Выше было описано, что делает pyenv-virtualenv, когда происходит вход в директорию или выход из неё, где находится файл .python-version.
[Работа с несколькими рабочими окружениями]
Если объединить все, что мы уже научились, то получится эффективная работа с несколькими рабочими окружениями. Предположим, что у нас установлены версии:
$ pyenv versions * system (set by /home/имяпользователя/.pyenv/version) 2.7.15 3.6.8 3.8-dev
И темерь нам нужно работать с двумя различными проектами:
1. Проект project1 с поддержкой Python 2.7 и 3.6.
2. Проект project2 с поддержкой Python 3.6 и экспериментами с 3.8-dev.
Как мы уже видели из вывода команды pyenv versions, по умолчанию используется системный Python (обозначено *). Сначала создадим витуальное окружение для первого проекта:
$ cd project1/ $ pyenv which python /usr/bin/python $ pyenv virtualenv 3.6.8 project1 . $ pyenv local project1 $ python -V /home/имяпользователя/.pyenv/versions/project1/bin/python
Обратите внимание, что если мы выйдем из директории проекта, то по вернемся обратно к системному Python:
$ cd $HOME $ pyenv which python /usr/bin/python
Повторим такие шаги для создания виртуального окружения второго проекта:
$ cd project2/ $ pyenv which python /usr/bin/python $ pyenv virtualenv 3.8-dev project2 . $ pyenv local 3.8-dev $ pyenv which python /home/имяпользователя/.pyenv/versions/3.8-dev/bin/python
Теперь мы можем переключаться между проектами, и при этом будут автоматически активироваться их отдельные виртуальные окружения:
$ cd project2/ $ python -V Python 3.8.0a0 $ cd ../project1 $ python -V Python 3.6.8
Можно больше не заботиться о том, чтобы активировать окружения: вы можете переключаться между своими проектами, и pyenv будет сама заботиться об этом, автоматически активируя корректные версии Python и корректные виртуальные окружения.
[Одновременнаая активация нескольких версий]
Как было описано в примере выше, project2 использует экспериментальные фичи Python 3.8. Предположим, что вы решили убедиться, что код проекта project2 все еще работает на Python 3.6. Если вы попытаетесь запустить python3.6, то получите следующее:
$ cd project2/ $ python3.6 -V pyenv: python3.6: command not found
The `python3.6' command exists in these Python versions: 3.6.8 3.6.8/envs/project1 project1
Утилита pyenv информирует вас о том, что хотя Python 3.6 недоступен в текущем активном рабочем окружении, он доступен в других окружениях. И pyenv предоставляет вам способ активировать несколько окружений сразу знакомой командой local :
$ pyenv local project2 3.6.8
Эта команда указывает для pyenv, что вы хотите использовать виртуальное окружение project2 в качестве первой опции. Так что если команда, например python, может быть распознана в обоих окружениях, то сначала будет браться настройка из project2 перед 3.6.8. Посмотрим, что произойдет, если вы запустите:
$ python3.6 -V Python 3.6.8
Здесь утилита pyenv попыталась команду python3.6, и потому что она была найдена в окружении, который активен, то её можно запустить. Это особенно полезно для таких инструментов, как tox, требующих доступности несколько версий Python в переменной PATH.
Совет профи: если вы используете tox и pyenv, то обратите внимание на пакет tox-pyenv.
Предположим, что в примере выше вы обнаружили проблему совместимости с вашей библиотекой, и хотели бы выполнить некое локальное тестирование. Это тестирование требует установки всех зависимостей. Тогда вы должны выполнить следующие шаги для создания нового окружения:
$ pyenv virtualenv 3.6.8 project2-tmp $ pyenv local project2-tmp
Как только вы удовлетворились своим локальным тестированием, можете переключиться обратно в свое окружение по умолчанию:
$ pyenv local project2 3.6.8
[Заключение]
Теперь вы можете более просто работать с проектом, которому нужно поддерживать несколько вариантов рабочих окружений. Также вы можете более просто тестировать последние и полезные версии Python, не беспокоясь о том, что потеряете свою станцию разработки. И все это с помощью отличного инструмента: pyenv.
Как вы видели, pyenv может помочь:
• Установить несколько разных версий Python.
• Переключаться между установленными версиями.
• Использовать виртуальные рабочие окружения вместе с pyenv.
• Автоматически активировать разные версии Python и виртуальные окружения.
[Бонус: отображение имени окружения в командной строке шелла]
Если вы часто переключаетесь между окружениями с разными версиями Python, то вероятно заметили, что нет прямой подсказки о том, какая версия сейчас активна. Автор статьи [1] рекомендует oh-my-zsh [6] и тему agnoster [7], которые делают приглашение командной строки примерно таким:

С помощью этих инструментов отпадает необходиость каждый раз запускать python -V или pyenv version, чтобы понять, какая версия Python сейчас активна. Чтобы это работало, в приглашение командной строки добавляется ссылка на виртуальное окружение:

В этом примере версия Python соответствует project1-venv, что сразу отображается в начале приглашения командной строки. Если вам это понравилось, то вы можете использовать тему agnoster-pyenv [8].
[Ссылки]
