Как переключить версию python windows

Последнее обновление: 16.12.2022

На одной рабочей машине одновременно может быть установлено несколько версий Python. Это бывает полезно, когда идет работа с некоторыми внешними библиотеками, которые поддерживают разные версии python, либо в силу каких-то
других причин нам надо использовать несколько разных версий. Например, на момент написания статьи последней и актуальной является версия Python 3.11.
Но, допустим, необходимо также установить версию 3.10, как в этом случае управлять отдельными версиями Python?

Windows

На странице загрузок https://www.python.org/downloads/ мы можем найти ссылку на нужную версию:

Управление несколькими версиями Python

И также загрузить ее и установить:

Установка разных версий Python на Windows

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

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

Та версия Python, которая находится выше, будет версией по умолчанию. С помощью кнопки «Вверх» можно нужную нам версию переместить в начало, сделав версией по умолчанию.
Например, в моем случае это версия 3.11. Соответственно, если я введу в терминале команду

или

то консоль отобразит версию 3.11:

C:\python>python --version
Python 3.11.0

Для обращения к версии 3.10 (и всем другим версиям) необходимо использовать указывать номер версии:

C:\python>py -3.10 --version
Python 3.10.9

например, выполнение скрипта hello.py с помощью версии 3.10:

Подобным образом можно вызывать и другие версии Python.

MacOS

На MacOS можно установить разные версии, например, загрузив с официального сайта пакет установщика для определенной версии.

Для обращения к определенной версии Python на MacOS указываем явным образом подверсию в формате python3.[номер_подверсии]. Например, у меня установлена версия
Python 3.10. Проверим ее версию:

Аналогично обращении к версии python3.9 (при условии если она установлена)

К примеру выполнение скрипта hello.py с помощью версии python 3.10:

Linux

На Linux также можно установить одновременно несколько версий Python. Например, установка версий 3.10 и 3.11:

sudo apt-get install python3.10
sudo apt-get install python3.11

Одна из версий является версий по умолчанию. И для обращения к ней достаточно прописать python3, например, проверим версию по умолчанию:

Для обращения к другим версиям надо указывать подверсию:

python3.10 --version
python3.11 --version

Например, выполнение скрипта hello с помощью версии Python 3.10:

Но может сложиться ситуация, когда нам надо изменить версию по умолчанию. В этом случае применяется команда update-alternatives для связывания
определенной версии Python с командой python3. Например, мы хотим установить в качестве версии по умолчанию Python 3.11. В этом случае последовательно выполним следующие команды:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2

Числа справа указывают на приоритет/состояние. Так, для версии 3.11 указан больший приоритет, поэтому при обращении к python3 будет использоваться именно версия 3.11 (в моем случае это Python 3.11.0rc1)

Управление версиями Python в linux

С помощью команды

sudo update-alternatives --config python3

можно изменить версию по умолчанию

Установка версии Python по умолчанию в linux

New to Python and programming in general. I want to «install» a module from the command line for v 2.6, but it looks like my default Python is 2.5. (python —version returns 2.5.4)

How can I run my python setup.py build/install on 2.6 instead?

Many thanks in advance,

Brock

asked Jul 6, 2010 at 18:42

Btibert3's user avatar

1

You can use explicit paths:

c:\python26\python setup.py install
c:\python25\python setup.py install

Recent versions of Python install PyLauncher. It is installed in the path so no need to add an explicit Python to the path, and it allows easy switching between multiple Python versions.

Examples:

py -3 setup.py # run latest Python 3
py -2 setup.py # run latest Python 2
py -3.3
py -2.7-32 # use 32-bit version
py # run default version

The default version can be specified in the environment variable PY_PYTHON, e.g. PY_PYTHON=3 (latest Python 3).

answered Jul 6, 2010 at 20:06

Mark Tolonen's user avatar

Mark TolonenMark Tolonen

167k26 gold badges169 silver badges251 bronze badges

It depends on your operating system. If you have python 2.6 installed, you need to change your environment path to point to the 2.6 executable rather than the 2.5 executable. Do a Google search for changing your PATH variable on your operating system.

answered Jul 6, 2010 at 18:46

Alex Bliskovsky's user avatar

Alex BliskovskyAlex Bliskovsky

6,0037 gold badges32 silver badges41 bronze badges

1

If you’re on Windows and you just need to run a different version of Python temporarily or, as was the case for me, a third party program needs to run a different version of Python, then modify your path at the command prompt:

> python --version
> set PATH=<path-to-desired-python-version>;%PATH%
> python --version

For me it was:

> python --version
Python 3.4.2
> set PATH=C:\tools\python2\;%PATH%
> python --version
Python 2.7.9
> npm install...
(success)

This allowed the third party program to install successfully. The PATH modification only affects programs running in the same command prompt session and only lasts as long as the command prompt session..

answered Jan 6, 2015 at 14:38

Seth's user avatar

SethSeth

6,5745 gold badges49 silver badges58 bronze badges

They are a couple of ways you can do this
1) python virtual environment
2) pylauncher
3) Changing your windows path variable, tedious to say the least

All three outlined in this video https://www.youtube.com/watch?v=ynDlb0n27cw

answered May 21, 2017 at 16:53

Timothy Mugayi's user avatar

It sounds like you are on windows. If so, run this with the python you want, to set that python as the windows one. (not my code)

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
    except EnvironmentError:
        try:
            reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
        except Exception, e:
            print "*** Unable to register: %s" % e
            return

    SetValue(reg, installkey, REG_SZ, installpath)
    SetValue(reg, pythonkey, REG_SZ, pythonpath)
    CloseKey(reg)
    print "--- Python %s at %s is now registered!" % (version, installpath)

if __name__ == "__main__":
    RegisterPy()

answered Apr 9, 2012 at 2:20

fastmultiplication's user avatar

Im trying to switch between python versions 3.6.6 and 3.7.0 in windows. I tried py -3.6.6 and doesn’t work. Looked for options in py -h, found none. I saw a couple of answers for switching between python versions 2.x and 3.x by adding #!python3 at the start of the file.

I’m able to switch between these by moving path variables up and down but I want to know if there is a option to switch between versions in cmd like there is brew switch python version in IOS.

Thank you.

asked Sep 2, 2018 at 2:35

Tarun Kolla's user avatar

If You have python of the same version with different subversion e.g. 2.6, 3.7,.. 3.9.
Use the below command to open specific python version’s terminal in command prompt:

py -2.6
py -3.7
.

for installing modules in command prompt:

py -2.6 -m pip install <modules>
py -3.7 -m pip install <modules>

answered Dec 2, 2020 at 6:35

NevetsKuro's user avatar

NevetsKuroNevetsKuro

6447 silver badges15 bronze badges

1

The easiest way is simply type py -2 if you want to use python2, and py -3 if you want to use python3.

Hoppo's user avatar

Hoppo

1,1401 gold badge13 silver badges32 bronze badges

answered Jun 15, 2020 at 21:07

Zhe Huang's user avatar

Change the path in environment variable after downloading python 3.7.0 in windows where you can find in the properties of My Computer in Advanced System Settings

answered Sep 2, 2018 at 3:12

Akash Badam's user avatar

Akash BadamAkash Badam

4762 silver badges9 bronze badges

1

If you need to use multiple versions of Python, or run different sets of packages in the Python environment, you should probably just use Anaconda to create them, for example:

    conda create -n py36 python=3.6 anaconda

then you can just switch between them using

    activate <your-environment-name>

answered Sep 2, 2018 at 3:12

Ho John Lee's user avatar

2

В большинстве операционных систем Python предустановлен
(ну, кроме Windows, но даже там теперь есть
команда python, которая предложит установить интерпретатор из магазина приложений).
В Unix-подобных операционных системах, таких как Linux и MacOS, Python
пустил корни очень глубоко. Множество компонентов ОС рассчитывают, что Python
установлен и работает стабильно. Это и хорошо, и плохо.

Это хорошо, потому что хотя бы какой-то Python в большинстве систем доступен из
коробки — бери и пользуйся. Иногда доступно сразу несколько версий
интерпретатора, например, python2 указывает на устаревшую версию 2.7,
python3 — на какую-нибудь стабильную версию Python 3, типа 3.6 или 3.7, а
просто python указывает либо на одно, либо на другое (в последнее время
предпочтение чаще отдаётся третьей версии). Для обучения или для
тестирования этого может быть вполне достаточно.

С другой стороны, это плохо, потому что, как правило, предустановленный Python
настолько стабилен, что уже успел зарасти мхом.
В некоторых системах до сих пор предустановлен только Python 2,
но даже если вам повезёт получить Python третьей версии,
то наверняка он будет отставать от последней версии на пару минорных релизов.
Не факт, что вам это подойдёт.

Иногда нужно иметь сразу несколько версий Python для работы над
разными проектами, например, 3.7 и 3.8. В некоторых ОС нужные версии можно
установить через пакетный менеджер (например, в Fedora через dnf)
— из основных репозиториев или из сторонних.
Но зачастую такие репозитории содержат не все релизы
интерпретаторов, а лишь выбранное мейнтейнерами репозиториев подмножество.

Решение у всех этих проблем одно — нужно установить недостающие версии
интерпретатора, какими бы они ни были. Этому и посвящён пост.

pyenv — утилита, которая позволяет
легко переключаться между несколькими версиями интерпретатора Python, а
также устанавливать новые. Позволяет устанавливать, наверное, вообще
все известные науке версии интерпретаторов Python. Работает просто и незаметно.

pyenv — это всего лишь один из последователей аналогичного инструмента
из мира Ruby — rbenv.
Есть ещё и nodenv для Node.js,
который тоже вдохновился rbenv.

Проект написан целиком на bash. Это значит, что он никак не зависит
от Python — было бы забавно, если бы для установки Python нужен был бы Python.
Также это означает, что на Windows pyenv работать не будет
(тред с обсуждением).
Следует отметить, что в Windows проблема установки нескольких версий
и не возникает — там всегда можно скачать и установить
сколько угодно интерпретаторов с официального сайта,
а pylauncher поможет выбрать
из них нужную версию.
Кроме того, пользователи современных версий
Windows могут использовать pyenv внутри WSL (Windows Subsystem for Linux).
Ещё это означает, что у авторов много отваги — я бы не решился писать
на bash что-то настолько сложное. Как же хорошо, что всё уже написано.

Установка

  1. Скачаем pyenv.

    Установка pyenv производится простым клонированием git-репозитория.

    У проекта есть умный скрипт,
    который скачает pyenv и его сотоварищей:

    $ curl https://pyenv.run | bash
    

    Скрипт не требует прав суперпользователя (без sudo), потому что
    всё устанавливается в домашнюю директорию пользователя. Туда же
    будут устанавливаться и интерпретаторы. Если страшно запускать
    какие-то скрипты из интернета (так и должно быть), то прочитать код скрипта можно
    здесь.

  2. Настроим шелл.

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

    WARNING: seems you still have not added 'pyenv' to the load path.
    
    # Load pyenv automatically by adding
    # the following to ~/.bashrc:
    
    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    В случае с zsh нужно будет добавить те же самые строки в ~/.zshrc.

    В случае с fish в связи с особенностями самого шелла инструкции отличаются:

    # Load pyenv automatically by adding
    # the following to ~/.config/fish/config.fish:
    
    set -x PATH "~/.pyenv/bin" $PATH
    status --is-interactive; and . (pyenv init -|psub)
    status --is-interactive; and . (pyenv virtualenv-init -|psub)
    

    Кстати, горячо рекомендую попробовать fish, очень удобный шелл.

  3. Установим зависимости для сборки.

    При установке новой версии интерпретатора через pyenv под капотом
    происходит сборка из исходников, поэтому для успешной установки
    необходимы некоторые зависимости. Полный и актуальный список
    для своей ОС смотрите здесь
    или здесь.
    Лучше установить всё заранее.

  4. Перезапустим шелл и проверим установку.

    $ pyenv --version
    pyenv 1.2.18
    

Как это работает

pyenv работает благодаря манипуляциям над переменной окружения $PATH.
Эта переменная содержит в себе список директорий, в которых ОС будет искать
исполняемые файлы, вызванные без указания полного пути. Именно
благодаря этой переменной мы можем в терминале вместо /bin/cat вызывать
просто cat. Когда мы набираем в терминале имя программы (cat),
ОС перебирает директории из $PATH слева направо, пока в одной
из них (в данном примере /bin) не найдёт программу с именем cat,
которую и запустит. Поиск прекращается после первого совпадения.

Команда pyenv init -, которую мы добавили в конфиг шелла (.bashrc или аналог)
добавляет директории pyenv в самое начало переменной $PATH.
Зачем это нужно? pyenv создаёт небольшие исполняемые файлы,
так называемые файлы-прослойки (shims), для всех команд,
которыми он собирается управлять, например, python, pip, ipython и так далее.
Эти файлы-прослойки должны попасть в $PATH прежде самих управляемых программ
и «затенить» системные python, pip и так далее.
Эти файлы-прослойки в конечном счёте просто вызывают сам pyenv
с нужными аргументами.
Таким образом pyenv перехватывает обращения к некоторым именам,
и анализируя поступившую к нему информацию,
принимает решение о том, какую именно версию Python нужно запустить.
При выборе версии pyenv принимает во внимание следующие факторы в
указанном порядке:

  1. Переменная окружения PYENV_VERSION, если указана.

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

  2. Локальная версия Python.

    При помощи специального файла .python-version можно настроить
    версию интерпретатора для определенного проекта. Захо́дите внутрь
    директории (cd project/), и pyenv внезапно понимает, что нужно
    сменить Python. Выхо́дите обратно — версия Python меняется на глобальную.
    Это распространяется и на все поддиректории проекта —
    pyenv рекурсивно ищет файл .python-version вверх по файловой системе,
    пока не дойдёт до корня.

  3. Глобальная версия Python.

    В файле ~/.pyenv/version записана глобальная версия Python, которая
    будет использоваться по умолчанию, если не сконфигурирована локальная
    версия.

Вам вряд ли придётся вручную трогать эти файлы, потому что у pyenv есть
удобные команды (pyenv local и pyenv global),
чтобы ими управлять, но знать о файлах всё равно полезно.

Использование

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

Сначала посмотрим, какие версии Python pyenv может установить:

$ pyenv install --list
...
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.6.9
3.6.10
3.7.0
3.7-dev
3.7.1
3.7.2
3.7.3
3.7.4
3.7.5
3.7.6
3.7.7
3.8.0
3.8-dev
3.8.1
3.8.2
3.9.0a6
3.9-dev
...

Список довольно длинный, поэтому я его подсократил. Обычно вас будут
интересовать такие версии, как 3.8.2 или 3.7.7 — это версии самой
распространённой реализации интерпретатора CPython. Но если
вам нужна экзотика, то pyenv умеет устанавливать любые сорта интерпретаторов
Python (pypy3.6-7.3.0, stackless-3.7.5, jython-2.7.1,
ironpython-2.7.7, micropython-1.12 и т.д.). Для вас ведь не стало
новостью, что существует много разных реализаций интерпретатора Python?

Установим CPython 3.8.2:

$ pyenv install 3.8.2
Downloading Python-3.8.2.tar.xz...
Installing Python-3.8.2...

Через пару минут ожидания ваш новоиспечённый Python будет готов.

Можно сразу же назначить эту версию глобальной:

$ pyenv global 3.8.2
$ python -V
Python 3.8.2

Давайте в целях демонстрации установим ещё парочку интерпретаторов:

$ pyenv install 2.7.18
$ pyenv install 3.9.0a6

Получим список установленных версий интерпретатора:

$ pyenv versions
  2.7.18
* 3.8.2 (set by /home/br0ke/.pyenv/version)
  3.9.0a6

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

$ pyenv global 3.8.2 2.7.18

Теперь вывод версий покажет следующее:

$ pyenv versions
* 2.7.18 (set by /home/br0ke/.pyenv/version)
* 3.8.2 (set by /home/br0ke/.pyenv/version)
  3.9.0a6

А работать это будет вот таким образом:

$ python -V
Python 3.8.2
$ python3 -V
Python 3.8.2
$ python2 -V
Python 2.7.18

Грубо говоря, та версия, которая указана первой (3.8.2),
имеет приоритет и занимает все нужные ей имена. Следующие версии (2.7.18)
могут занять любые оставшиеся свободные имена (в данном случае, это только имя
python2).

А файл глобальной версии ~/.pyenv/version на данный момент имеет вот
такое содержимое:

$ cat ~/.pyenv/version
3.8.2
2.7.18

Локальная версия

Давайте создадим директорию и войдём в неё:

$ mkdir my_project
$ cd my_project

Представим, что в этой директории мы будем разрабатывать некий
проект, на котором мы хотим опробовать фишки нового Python 3.9.
Сообщим об этом pyenv:

В директории появился файл .python-version со следующим содержимым:

$ cat .python-version
3.9.0a6

На данный момент список версий показывает следующее (удобно использовать
эту команду, чтобы понять какую версию и почему pyenv активирует):

$ pyenv versions
  2.7.18
  3.8.2
* 3.9.0a6 (set by /home/br0ke/my_project/.python-version)

Изменения немедленно вступили в силу:

$ python -V
Python 3.9.0a6

Но эта конфигурация никак не влияет на работу pyenv вне директории проекта:

$ cd ..
$ python -V
3.8.2

Как и в случае с глобальной конфигурацией, можно локально активировать
сразу несколько версий интерпретатора.

Установим IPython

Часто бывает нужно установить какой-нибудь пакет так, чтобы он тоже
стал доступен из командной строки. Допустим, что нам нужно установить
ipython — более удобную версию REPL Python.
Сделаем это:

$ cd my_project
$ pip install ipython

Запустим:

$ ipython
Python 3.9.0a6 (default, May  3 2020, 16:58:20)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.14.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Программа сразу доступна, благодаря тому, что pyenv очень умный и
создал новый файл-прослойку (shim) автоматически:

$ which ipython
/home/br0ke/.pyenv/shims/ipython

Вне директории с проектом ipython будет недоступен, ведь он же установлен
в локальный интерпретатор 3.9.0a6, а снаружи активирован другой
интерпретатор — можете проверить самостоятельно.

Возникают ситуации, когда по какой-то причине прослойка не создалась
или с ней случилось что-то ещё, например, удалилась:

$ rm $(which ipython)
$ ipython
No such file or directory

Не беда! Можно попросить pyenv пересоздать их все заново:

И всё работает снова:

$ ipython
Python 3.9.0a6 (default, May  3 2020, 16:58:20)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.14.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Можно вообще добавить команду pyenv rehash в свой ~/.bashrc (или аналог),
чтобы при запуске шелла гарантированно иметь рабочие файлы-прослойки (shims).

Заключение

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

Обязательно
подпишитесь на уведомления
о новых постах в блоге, чтобы ничего не пропустить!

Дополнительное чтение

  • Репозиторий проекта на GitHub;
  • Туториал на RealPython;
  • Альтернатива: универсальный менеджер версий asdf.

Обложка: Schwoaze, Snakes Black Snakes Animal Free Photo

Они устанавливаются отдельно и не конфликтуют. Переключатся можешь в ide. В терминале можешь писать python это версия 2 или python 3 это 3я версия. Качай https://www.python.org и не выдумывай). Конфликт может быть между версиями django и всяких библиотек на этот случай есть https://virtualenv.pypa.io/en/stable/ или docker.

устанавливаются в разные папки, запускаешь просто из каждой свой python.exe и всё, а если вопрос про переменные PATH, то можешь вручную назвать их python2 и python3 и прописать для каждой свой путь

Господа, а вы разве не знаете про консольную команду py? Если вызвать ее py -2 <имя питоновского файла>, то вызовется второй питон, если py -3 — третий. Без параметров, тот, что указан в environment переменной PY_PYTHON. Там еще много опций — у меня на работе все четыре питона стоят, 2.7.13 32.64 бита и 3.6.0 тоже в двух экземплярах.

  • Как переключить видеокарту на компьютере со встроенной на дискретную windows 10
  • Как переключить imac на windows
  • Как переключить ide на ahci windows 10 без переустановки системы
  • Как переключить hdmi на displayport windows 10
  • Как переключить 32 битную систему на 64 битную windows 7