Могу ли я установить Python 3.x и 2.x на одном компьютере с Windows?


156

Я использую Windows, и оболочка / ОС автоматически запускает Python на основе настроек реестра, когда вы запускаете программу из командной строки. Это сломается, если я установлю версии Python 2.x и 3.x на одну и ту же машину?

Я хочу играть с Python 3, но при этом иметь возможность запускать сценарии 2.x на той же машине.


1
В моем дистрибутиве, Fedora, он устанавливает Python 2.7 в /usr/bin/pythonи Python 3.3 в /usr/bin/python3. Дает разные имена для Python3 Pip и IPython тоже. Очень кстати.
полковник Паник

19
@user - По духу я согласен с вашим ответом, но я столько раз горел этим духом, что понимаю, почему кто-то спрашивает, прежде чем совершить прыжок.
Питер Хенли

Ответы здесь, кажется, все о том, как выбрать, когда и на каком питоне запускать. Моя проблема заключалась в том, что установщик (3.6.2) не запустился, потому что он говорит: «Другая версия этого продукта уже установлена». Оказывается, у меня уже была установлена ​​3.6.3.
Yoyo

Ответы:


66

Официальное решение для сосуществования, кажется, Python Launcher для Windows , PEP 397, который был включен в Python 3.3.0 . Установка высвобождения отвалов py.exeи pyw.exeпусковые установки во %SYSTEMROOT%( C:\Windows) , который затем связанные с pyи pywсценариями, соответственно.

Чтобы использовать новый модуль запуска (без ручной настройки собственных ассоциаций с ним), оставьте включенным параметр «Регистрация расширений». Я не совсем уверен, почему, но на моей машине он оставил Py 2.7 в качестве «по умолчанию» (лаунчера).

Запуск сценариев путем вызова их непосредственно из командной строки направит их через панель запуска и проанализирует шебанг (если он существует). Кроме того, можно явно вызвать пусковую установку и использование переключателей: py -3 mypy2script.py.

Все манеры Шебанга, кажется, работают

  • #!C:\Python33\python.exe
  • #!python3
  • #!/usr/bin/env python3

а также бессмысленные злоупотребления

  • #! notepad.exe

«Они» действительно должны включить pylauncher в текущий дистрибутив Python 2 для Windows (или сделать так, чтобы люди больше знали о его доступности и о том, где его взять сами).
Мартино

1
Возможно, но если вы просто живете в мире Python 2, это не так уж важно.
Ник Т

Эта программа запуска была доступна как отдельная программа, по крайней мере, с середины 2012 года.
Смит Джонт


1
@Mooncrater, вы можете проверить, который будет использоваться с where.exe pip. Я думаю, что установщик Python 3 устанавливает pip3псевдоним для своего пункта, но вы также можете сделать что-то вроде того, что py -3 -m pip install requestsя думаю.
Ник Т

41

Вот мои настройки:

  1. Установите оба Python 2.7 и 3.4 с установщиками Windows .
  2. Перейдите к C:\Python34(путь установки по умолчанию) и измените python.exe на python3.exe
  3. Отредактируйте переменные среды, чтобы включитьC:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

Теперь в командной строке вы можете использовать pythonдля 2.7 и python3для 3.4.


3
А как, например, pipв кли?
Кристиан

3
Последние версии Python 2 & 3 поставляются с pip. Так что вы можете использовать pipи pip3соответственно.
Алистер Мартин

8
Я просто указывал, что вам придется переименовать все эти утилиты. Даже тогда существует риск того, что что-то сломается, если, например, python3 явно (например, жестко запрограммирован) вызывает pip, а не pip3.
Кристиан

Это плохая идея, в конечном итоге переименовать все, и Пип не работает таким образом.
Бханса

перестать сталкиваться с проблемой пипса на python3. вам нужно ОТКЛЮЧИТЬ «install pip» из первоначального мастера установки python3, затем переименуйте python3.7 / python.exe в python3.exe, ТО скачайте get-pip.py и запустите python3.exe get-pip.py. Таким образом, pip3 знает, что переименованный python3.exe предназначен для python3, а не для оригинального /python3.7/python.exe
Liu

36

Вы можете установить оба.

Вы должны написать это перед вашим сценарием:

#!/bin/env python2.7

или, в конце концов ...

#!/bin/env python3.6

Обновить

Мое решение отлично работает с Unix, после быстрого поиска в Google вот решение для Windows:

#!c:/Python/python3_6.exe -u

То же самое: перед вашим сценарием.


Ну, это может быть установлено на Linux, и может быть на Windows тоже. Вам просто нужно установить переменную env .. вы можете сделать это в Windows ...
Патрик Дежарден

7
Это решение не будет работать с окнами (если вы не вызываете его из оболочки в стиле Unix (например, Cygwin)). #! обрабатывается оболочкой, и Windows не поддерживает его. Я верю в пример, который вы гуглили, он обрабатывается веб-сервером, а не запускается в Windows
Brian

Да, на Apache на Windows ... оболочка запроса вопроса автоматически, вы можете сделать это с Cygwin, Apache и т.д ...
Патрик Дежарден

@ Даок: я не понизил тебя. Я благодарен за помощь даже за попытку помочь.
minty

4
Можно использовать pylauncher, чтобы сделать что-то вроде этой работы (как описано в PEP 397 - Средство запуска Python для Windows в 2011 году.
martineau

33

Начиная с версии 3.3, Python представил утилиту Launcher для Windows https://docs.python.org/3/using/windows.html#python-launcher-for-windows .

Итак, чтобы иметь возможность использовать несколько версий Python:

  1. установить Python 2.x (x - любая нужная вам версия)
  2. установить Python 3.x (x - это любая версия, которая вам нужна, у вас должна быть одна версия 3.x> = 3.3)
  3. открыть командную строку
  4. введите py -2.x для запуска Python 2.x
  5. введите py -3.x для запуска Python 3.x

1
А как насчет людей, которые используют IDE? Это работает для этого тоже?
emorphus

1
@emorphus Я думаю, это зависит от IDE, но в целом вы должны выбрать версию интерпретатора. Поэтому, если у вас установлено несколько версий Python, просто выберите ту, которую вы хотите использовать в своем проекте. Также терминал в IDE работает так же, как командная строка, поэтому эти команды должны работать там же.
Иван Кучерак

2
Это лучшее решение IMO, оно отлично работает с самого начала. Не нужно иметь -3.x, который вы можете просто сделать py -3 filename.py.
OmegaNalphA

9

Я использую 2.5, 2.6 и 3.0 из оболочки с пакетными сценариями в одну строку вида:

:: The @ symbol at the start turns off the prompt from displaying the command.
:: The % represents an argument, while the * means all of them.
@c:\programs\pythonX.Y\python.exe %*

Назовите их pythonX.Y.batи поместите их где-нибудь в вашем ПУТИ. Скопируйте файл для предпочитаемой минорной версии (т.е. самой последней) в pythonX.bat. (Например copy python2.6.bat python2.bat.) Тогда вы можете использовать python2 file.pyиз любого места.

Однако это не помогает и даже не влияет на ситуацию с ассоциацией файлов Windows. Для этого вам понадобится программа запуска, которая читает #!строку, а затем связывает ее с файлами .py и .pyw.


Смотрите мой комментарий об ответе Патрика Дежарденса.
Мартино

8

При добавлении и переменной среда будет А конфликт , так как два исполняемыми имеют одинаковое имя: python.exe.

Просто переименуйте один из них. В моем случае я переименовал его в python3.exe.

Таким образом, когда я запускаю, pythonон будет выполняться, python.exeкоторый составляет 2,7, а когда я бегу, python3он выполняет, python3.exeкоторый составляет 3,6

введите описание изображения здесь


Можете ли вы разработать часть примечания? Когда я переименовываю python в python3, я больше не могу запустить pip, потому что кажется, что pip.exe, pip3.exe и pip3.7.exe все зависят от python.exe. Когда я запускаю pip, я получаю сообщение об ошибке => Fatal error in launcher: Unable to create process using '"c:\users\<my_username>\appdata\local\programs\python\python37-32\python.exe" "C:\Users\<my_username>\AppData\Local\Programs\Python\Python37-32\Scripts\pip.exe" '.
Мандар Садье

Я не знаю, у меня не было этой проблемы
Чариф Д.З.

@MandarSadye Вы можете открыть pip.exe в блокноте и найти python.exe .. Затем замените python.exe на python3.exe
atg

7

Ну вот...

winpylaunch.py

#
# Looks for a directive in the form: #! C:\Python30\python.exe
# The directive must start with #! and contain ".exe".
# This will be assumed to be the correct python interpreter to
# use to run the script ON WINDOWS. If no interpreter is
# found then the script will be run with 'python.exe'.
# ie: whatever one is found on the path.
# For example, in a script which is saved as utf-8 and which
# runs on Linux and Windows and uses the Python 2.6 interpreter...
#
#    #!/usr/bin/python
#    #!C:\Python26\python.exe
#    # -*- coding: utf-8 -*-
#
# When run on Linux, Linux uses the /usr/bin/python. When run
# on Windows using winpylaunch.py it uses C:\Python26\python.exe.
#
# To set up the association add this to the registry...
#
#    HKEY_CLASSES_ROOT\Python.File\shell\open\command
#    (Default) REG_SZ = "C:\Python30\python.exe" S:\usr\bin\winpylaunch.py "%1" %*
#
# NOTE: winpylaunch.py itself works with either 2.6 and 3.0. Once
# this entry has been added python files can be run on the
# commandline and the use of winpylaunch.py will be transparent.
#

import subprocess
import sys

USAGE = """
USAGE: winpylaunch.py <script.py> [arg1] [arg2...]
"""

if __name__ == "__main__":
  if len(sys.argv) > 1:
    script = sys.argv[1]
    args   = sys.argv[2:]
    if script.endswith(".py"):
      interpreter = "python.exe" # Default to wherever it is found on the path.
      lines = open(script).readlines()
      for line in lines:
        if line.startswith("#!") and line.find(".exe") != -1:
          interpreter = line[2:].strip()
          break
      process = subprocess.Popen([interpreter] + [script] + args)
      process.wait()
      sys.exit()
  print(USAGE)

Я только что прочитал об этом, прочитав эту ветку (потому что это то, что мне тоже нужно). У меня есть Pythons 2.6.1 и 3.0.1 на Ubuntu и Windows. Если это не работает для вас, опубликуйте исправления здесь.


1
Было бы лучше использовать sys.exit(process.returncode)для передачи статуса завершения вызванного сценария вызывающей стороне.
Мартино

4

Насколько я знаю, Python запускается из командной строки, используя переменную PATH, а не параметр реестра.

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


Это верно, если вы наберете «python myscript.py», тогда вы можете вместо этого набрать C: \ python30 \ python.exe, но командная строка сделает это автоматически, если вы просто введете myscript.py, а я не хочу разбивать 2. ? скрипты, если я устанавливаю 3.0 на той же машине.
minty

Да, конечно, это может помочь добавить информацию в вашем первом комментарии к вопросу, она была немного туманной.
Джеймс МакМахон

3

Установка Python обычно ассоциируется .py, .pywи .pycфайлы с интерпретатором Python. Таким образом, вы можете запустить скрипт Python, дважды щелкнув его в проводнике, или введя его имя в окне командной строки (поэтому вводить не нужно python scriptname.py, просто scriptname.pyподойдет).

Если вы хотите вручную изменить эту связь, вы можете отредактировать эти ключи в реестре Windows:

HKEY_CLASSES_ROOT\Python.File\shell\open\command
HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command
HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command

Python Launcher

Люди работают на пусковой установке Python для Windows: легкая программа , связанная с .pyи .pywфайлы , которые выглядят бы на линии «притон» ( по аналогии с Linux и др) на первой линии, и запустить Python 2.x или 3.x , как обязательный. Подробности смотрите в блоге «Запуск Python для Windows» .


3

Попробуйте использовать Анаконду.

Используя концепцию сред Anaconda, предположим, что вам нужен Python 3 для изучения программирования, но вы не хотите уничтожать свою среду Python 2.7 путем обновления Python. Вы можете создать и активировать новую среду с именем «snakes» (или что угодно) и установить последнюю версию Python 3 следующим образом:

conda create --name snakes python=3

Это проще, чем кажется, взгляните на вступительную страницу здесь: Начало работы с Anaconda

А затем для решения вашей конкретной проблемы, связанной с параллельной работой версий 2.x и 3.x, см. Управление версиями Python с помощью Anaconda.


Ссылка на Anaconda не работает.
Алекс

1
Исправлена ​​ссылка на «Начало работы с Anaconda».
Кейл Суини

2
@JeffreyCordero Я исправил ссылку. Документы Anaconda могут работать, но они не могут скрыться.
Кейл Суини

2

Вот как запустить Python 2 и 3 на одной машине

  1. установить Python 2.x
  2. установить Python 3.x
  3. Запустить Powershell
  4. Введите Python -2 для запуска Python 2.x
  5. Введите Python -3 для запуска Python 2.x

Python Launcher для Windows , был встроен в Python начиная с версии 3.3, как и было обещано в 2011 году , когда в одиночку Stand первый дебютировали:

Python Launcher для Windows


А как насчет людей, которые используют IDE? Это работает для этого тоже?
emorphus

2

Вот аккуратный и чистый способ установить Python2 & Python3 на Windows.

https://datascience.com.co/how-to-install-python-2-7-and-3-6-in-windows-10-add-python-path-281e7eae62a

Мой случай: мне пришлось установить Apache Cassandra. У меня уже был установлен Python3 на моем диске D : . Из-за множества работ по разработке я не хотел испортить мою установку Python3. И мне нужен был Python2 только для Apache Cassandra.

Поэтому я предпринял следующие шаги:

  1. Скачал и установил Python2.
  2. Добавлены записи Python2 в classpath ( C:\Python27;C:\Python27\Scripts)
  3. Изменен python.exe для python2.exe (как показано на рисунке ниже)

введите описание изображения здесь

  1. Теперь я могу запустить оба. Для Python 2 ( python2 --version) и Python 3 ( python --version). введите описание изображения здесь

Итак, моя установка Python3 осталась без изменений.


1

Я думаю, что есть возможность настроить связь файлов Windows для .py файлов в установщике. Снимите флажок, и все будет хорошо.

Если нет, вы можете легко повторно связать .py файлы с предыдущей версией. Самый простой способ - щелкнуть правой кнопкой мыши файл .py, выбрать «открыть с помощью» / «выбрать программу». В появившемся диалоговом окне выберите или выберите версию python, которую вы хотите использовать по умолчанию, и установите флажок «всегда использовать эту программу, чтобы открыть файл такого типа».


Это то, что я сделал. У меня все еще есть 2.5.2 и 3.0.1 на моей коробке Windows Vista. Я не проверял, что в мастере установки (возможно, сказал что-то вроде «Зарегистрироваться в системе» - я забыл). Оба работают нормально. Для командной строки я поместил в свой путь файл py.bat, который запускает Python 3 - ничего особенного, но он делает то, что мне нужно.
Anon

1

Вы должны убедиться, что переменная окружения PATH не содержит оба файла python.exe (добавьте тот, который вы в настоящее время используете для ежедневного запуска сценариев), или сделайте так, как предложил Kniht с пакетными файлами. Кроме того, я не понимаю, почему нет.

PS: у меня установлен 2.6 как «основной» python и 3.0 как «play» . 2.6 включен в ПУТЬ . Все отлично работает


1

Прежде чем я смело установил оба одновременно, у меня было так много вопросов. Если я дам python, пойдет ли он на py3, когда я захочу py2? pip / virtualenv произойдет под py2 / 3?

Кажется, сейчас все очень просто.

Просто вслепую установите их обоих. Убедитесь, что вы получите правильный тип (x64 / x32). Во время / после установки убедитесь, что вы добавляете в путь переменные среды .

[ENVIRONMENT]::SETENVIRONMENTVARIABLE("PATH", "$ENV:PATH;C:\PYTHONx", "USER")

Замените x в приведенной выше команде, чтобы задать путь.

Затем перейдите в обе папки.

Перейдите к

python3.6/Scripts/

и переименуйте pip в pip3.

Если pip3 уже существует, удалите pip. Это обеспечит запуск только pip под python2 . Вы можете проверить по:

pip --version

Если вы хотите использовать pip с python3, просто используйте

pip3 install 

Вы можете сделать то же самое с файлом Python и другими.

Ура!


1

Easy-peasy, после установки обеих версий python добавьте пути к переменным окружения, см настройки переменных среды. Затем перейдите к папкам python 2 и python 3 и переименуйте их в python2 и python3 соответственно, как показано здесь для python2и здесь для python3. Теперь в cmd наберите python2 или python3 для использования требуемой версии Вот.


0

Я предполагаю, что у меня есть Python 2.4, 2.5 и 2.6, установленные бок о бок на одном компьютере.


Это моя работа для нескольких версий 2.x, но minty спрашивает, могут ли они запустить 2.x вместе с 3.x. Есть некоторые существенные различия между ними. См. Различия между 2.x и 3.x
Кейл Суини

0

Я только начинаю с Python. Я читаю книгу Зеда Шоу «Изучай Python как трудный путь», для которой требуется Python версии 2.x, но я также беру класс, который требует Python 3.x

Итак, вот что я сделал.

  1. Скачать Python 2.7
  2. запустить Power Shell (должен быть уже установлен на Windows)
  3. запустите python IN POWERSHELL (если он не распознает, перейдите к шагу 4)
  4. Только если powershell не распознает тип Python 2.7 в следующем:

"[ENVIRONMENT] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C: \ PYTHON27 "," USER ")" (без внешних кавычек)

  1. Теперь введите python, и вы должны увидеть, как Python 2.7 бла-бла-бла

СЕЙЧАС для Python 3.x

Простая загрузка Python 3.x поставляется с приложением Python для Windows. Так что просто прикрепите приложение Python для Windows к панели задач или создайте ярлык на рабочем столе, и все готово!

Откройте Python для Windows для 3.x

Откройте Powershell для Python 2.x

Надеюсь, это поможет!


0

Хм ... Я сделал это прямо сейчас, просто загрузив Python 3.6.5 для Windows по адресу https://www.python.org/downloads/release/python-365/ и убедившись, что программа запуска будет установлена. Затем я следовал инструкциям по использованию Python 2 и Python 3. Перезапустите командную строку и затем используйте py -2.7для использования Python 2 и / pyили py -3.6для использования Python 3. Вы также можете использовать pip2для Python 2 pipи pipдля Python 3 pip.


0

У меня была та же проблема, когда я хотел использовать python3 для большей части работы, но IDA pro требовал python2. Итак, вот что я сделал.

Сначала я создал 3 переменные в пользовательской переменной среды следующим образом:

  1. PYTHON_ACTIVE: изначально пусто
  2. HOME_PYTHON27: содержит путь к папке, в которой установлен Python 2. Например. "; / Скрипты;"
  3. HOME_PYTHON38: Как и в python 2, эта переменная содержит путь к папкам python 3.

Теперь я добавил

% PYTHON_ACTIVE%

в переменную PATH. Таким образом, в сущности говоря, что бы ни содержало это "PYTHON_ACTIVE", это активный питон. Мы программно изменяем содержимое «PYTHON_ACTIVE» для переключения версии Python.

Вот пример сценария:

:: This batch file is used to switch between python 2 and 3.
@ECHO OFF

set /p choice= "Please enter '27' for python 2.7 , '38' for python 3.8 : "

IF %choice%==27 (
setx PYTHON_ACTIVE %HOME_PYTHON27%
)

IF %choice%==38 (
setx PYTHON_ACTIVE %HOME_PYTHON38%
)


PAUSE

Этот скрипт принимает версию Python в качестве входных данных и соответственно копирует HOME_PYTHON27 или HOME_PYTHON38 в PYTHON_ACTIVE. Таким образом меняется глобальная версия Python.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.