Меню Рубрики

Установка двух версий python

Установка нескольких версий Python в Windows с помощью Virtualenv

  1. Вы используете ОС Windows версии 10+
  2. Вы хотели бы использовать несколько версий Python на одном компьютере
  3. Вы устали от интернета, говорящего вам «Просто используйте Virtualenv»

TL; DR

  1. Откройте Command Prompt и введите pip install virtualenv
  2. Скачайте нужную версию python (НЕ добавляйте в PATH!) И запомните путь только что установленной версии path\to\new_python.exe
  3. Чтобы создать virtualenv, откройте Command Prompt и введите
    virtualenv \path\to\env -p path\to\new_python.exe
  4. Если вы используете PyCharm , обновите Project Interpreter и Code compatibility inspection .
  5. Чтобы установить пакеты:
    (I) Активируйте virtualenv: откройте Command Prompt и введите path\to\env\Scripts\activate.bat
    (II) Установите нужные пакеты
    (III) Деактивируйте с помощью deactivate .

Длинная версия; Читать

пролог

Если вы используете приложение Anaconda, этот процесс может быть проще с их графическим интерфейсом. Я сам не пробовал, пожалуйста, дайте мне знать, как все прошло, если вы идете по этому пути 🙂

1. Установите 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\ .

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 . Чтобы установить больше пакетов:

источник

Менеджер версий 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 2.x и 3.x на windows7

Планирую вести разработку на обеих версиях Python 2.x и 3.x на windows7. Подскажите пожалуйста, как можно без конфликта версий их установить и переключаться между ними?
Спасибо!

2 Answers

Установить нужные версии Python, например

При установке поставить галочку Add Python x.y to PATH , если требуется доступ к интерпретаторам в командной строке и не снимать галочку с установки pip при кастомизации.

Если разработка ведётся через PyCharm, то интерпретатор можно выбрать прямо в настройках File —> Setting —> Project —> Project Interpreter . Прямо там можно устанавливать пакеты для каждого интерпретатора. Допустимо также выбирать виртуальные окружения при использовании virtualenv .

Если нужно также вызывать python через командную строку. Создать копии python.exe в каждом из установленных экземпляров (пути для примера типовой установки на x64 машину), например

  • в 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 оставить.

После перезапуска командной строки (перезагрузки компьютера — любой операции, когда обновляются переменные окружения), если все интерпретаторы содержатся в переменной окружения PATH , будут доступны команды

  • D:\>python27 -V
    Python 2.7.13
  • D:\>python35 -V
    Python 3.5.3
  • D:\>python36 -V
    Python 3.6.0
Читайте также:  Установка jdbc для postgresql

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

  • D:\>python27 script.py
  • D:\>python35 script.py
  • D:\>python36 script.py

Установка пакетов в каждый интерпретатор возможно через pip

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

источник

Использование нескольких версий Python на unix-подобных операционных системах

Использование нескольких версий Python на unix-подобных операционных системах.

Что и зачем?

Python как язык постоянно развивается. Ветка Py2 скоро будет объявлена неподдерживаемой. Однако до сих пор существуют окружения, где приходится использовать Py2 и даже не свежий 2.7.x, а что-то постарее. Да и Python 3.x нынче — это большое семейство версий, кое-где несовместимых между собой, в т.ч. и синтаксически! Поэтому практикующий питонист широкого профиля должен понимать, как на одной машине иметь несколько версий среды исполнения. Даже если «в продакшне» и используется какой-нибудь Docker!

Установка Python из репозиториев пакетов операционной системы

Если вам повезло, то в репозитории пакетов ОС будет нужная версия Python, и вы сможете её установить с помощью команды вроде sudo apt-get install python3.5 . Однако достаточно старые дистрибутивы ОС могут не содержать новых версий Python, а достаточно новые дистрибутивы — старых версий Python. В особых случаях репозиторий вообще может содержать только одну версию среды исполнения.

Сборка из исходного кода

CPython — проект с исходным кодом. Доступ к исходному коду всех версий CPython позволяет собрать нужную версию самостоятельно. Однако это процесс, пусть и достаточно хорошо документирован, но всё же требует понимания того, что вам может потребоваться для компиляции кода под вашу операционную систему.

А ещё сборка из исходного кода — это единственный вариант для тех, кто хочет что-то в этом самом коде изменить или скомпилировать интерпретатор для какой-то экзотической платформы (встраиваемые системы, ретро-железо).

pyenv

Ещё одним из способов получения разных версий среды исполнения на одной машине является pyenv. Это «менеджер версий», выполненный в стиле rbenv для Ruby, nvm для NodeJS и т.п.

Миссия pyenv — управлять установленными версиями Python и делать некую версию «активной». Активная версия вызывается, если мы выполняем команду python (а также pip ), при этом разные проекты могут использовать разные активные версии и даже более чем одну одновременно. Последнее свойство полезно авторам библиотек, рассчитанных на широкий круг пользователей — таковые всегда нужно тестировать на разных версиях Python.

Установить pyenv достаточно просто, ведь инструмент представляет собой набор shell scripts. Именно поэтому получился pyenv максимально кроссплатформенным. Но за эту кроссплатформенность приходится платить тем, что каждую версию среды исполнения нужно компилировать из исходного кода! Для компиляции того же CPython потребуется компилятор Си ( gcc на Linux и clang на MacOS), и заголовочные файлы для библиотек, которые использует интерпретатор. Полный список пререквизитов для сборки приходится гуглить.

Установка системным пакетным менеджером из сторонних источников

Для большинства Unix-like ОС, помимо официальных репозиториев, существуют и неофициальные источники пакетов.

Для Debian-like систем, таких как Ubuntu и её производные, сторонние источники пакетов называются PPA, Personal Package Archives. Подключить любой PPA достаточно просто, но нужно понимать, что вы таким образом соглашаетесь на установку пакетов из стороннего источника, никак не подчиняющегося авторам дистрибутива ОС! Подключайте только хорошо зарекомендовавшие себя PPA, например от самих авторов ПО, которое вы хотите установить!

Для Ubuntu-based систем существует PPA от команды «deadsnakes». Это проверенный источник пакетов с самыми разными версиями Python как для свежих релизов ОС, так и для релизов «второй свежести».

Главное преимущество установки пакетов из проверенных PPA состоит в том, что пакеты обычно содержат оптимизированные под конкретный дистрибутив сборки с должным количеством обновлений и исправлений. Такие сборки более безопасны и производительны, чем те, что собраны вручную из исходников.

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

Псевдонимы python , python2 , python3

Исторически сложилось так, что интерпретатор Python запускается командой python . Но в какой-то момент случились Python3, обратная несовместимость, «разброд и шатания». Чтобы внести некоторую определённость, был представлен PEP-394: The «python» Command on Unix-Like Systems. Однако даже этот PEP разрешает разным системам самим выбирать, использовать ли Py2 и Py3 вместе или выбрать что-то одно. Системы должны лишь обеспечить, чтобы

  • команда python2 вызывала некую версию Python 2.x, если таковая вообще предоставляется;
  • команда python3 вызывала некую версию Python 3.x, если таковая предоставляется;
  • команда python соответствовала либо python2 , либо python3 (но не ссылалась на какую-то «третью» версию рантайма).
Читайте также:  Установка ипу в муниципальном жилье

При этом не гарантируется, что все эти команды будут присутствовать в конкретном случае: где-то будет доступна только команда python3 , где-то — python2 . Псевдоним python вообще обязан присутствовать лишь в виртуальном окружении и всегда соответствовать той версии интерпретатора, которая была выбрана при создании окружения.

Такое «разнообразие» сильно усложняет жизнь разработчикам ПО, особенно — авторам инструментов разработки! Разработчик может написать скрипт для Py2 и указать в shebang #!/usr/bin/env python . Но на одних ОС команда python вообще не будет доступна и скрипт просто не запустится, а на других python будет означать какой-нибудь Python 3.8 и скрипт может даже запуститься, но сломается в процессе выполнения.

И даже если автор использует техники, позволяющие писать портируемый код (six, 3to2), умеющий выполняться и на Py2, и на Py3, всё равно непонятно что же указать в shebang!

Вышеупомянутый PEP советует

  • либо фиксировать версию явно (только Py2 или только Py3),
  • либо требовать использования виртуальных окружений (в ВО всегда будет доступна команда python )
  • либо не писать shebang руками, а вместо этого использовать средства setuptools или другой системы пакетирования, создающие точки входа в зависимости при установке пакета (у точек входа shebang будет правильный).

Установка poetry на системы с разными версиями Python

На момент написания статьи poetry (это такой менеджер виртуальных окружений, сборщик пакетов и проч — «швейцарский нож» разработчика на Python) страдал от проблем с версиями рантайма: при установке рекомендованными способом скрипт-установщик завершался с ошибкой, либо установка проходила успешно, но затем не работала сама программа.

Дело (было?) в том, что и в скрипте-установщике и в точках входа в программу в shebang прописан python ! Сама программа работает и на Py2, и на Py3, но авторы исходили из предположения, что на целевой системе в любом случае будет присутствовать псевдоним python , вызывающий тот или иной интерпретатор. На некоторых системах такой команды нет…

Если использовать pyenv, оный всегда предоставляет команду python и poetry «просто работает». Нет проблем и на старых дистрибутивах, где ещё не отказались окончательно от Py2 . И конечно всё работает в виртуальном окружении. Рассмотрим этот вариант поподробнее.

Установка в выделенное виртуальное окружение

Для начала нам понадобится само окружение. Предположим, что Python3 вы уже так или иначе поставили. Делаем раз

Программа установлена! Теперь создаём символическую ссылку на точку входа в папке, видимой в PATH , например, в $HOME/.local.bin :

Работает! Обновлять программу в будущем можно с помощью того же pip (который в окружении). А можно и вовсе автоматизировать процесс установки такого вот Python-софта с помощью pipx.

Особенности использования poetry, установленного в виртуальное окружение

Poetry построен так, чтобы работать с абстрактной версией python. Поэтому он хорошо сочетается с pyenv: один на себя берёт управление разными пайтонами, а другой — проектами на этих пайтонах.

Но эта привязка к команде python немного мешает, когда poetry установлен в своём собственном виртуальном окружении: в этом окружении Python уже известен и не может быть изменён. Данная особенность упомянута в документации к poetry, так что это «не баг, а фича». И всё же есть способ обойти сие ограничение: можно инициализировать окружение вручную с нужной версией Python и настроить poetry на использование этого готового окружения.

Для начала учим poetry создавать окружения не в своём кэше, а в папке с проектом:

С этих пор для каждого проекта виртуальное окружение будет располагаться в поддиректории .venv .

Уже в конкретном проекте инициализируем окружение командой

(для Py2 команда будет другой, т.к. модуль venv тогда ещё не поставлялся вместе со средой исполнения).

Теперь можно работать с poetry как обычно. Несмотря на то, что Python в проекте, возможно, отличается от рантайма, запускающего poetry!

источник

Добавить комментарий

Adblock
detector