Чи можу я встановити Python 3.x та 2.x на одному комп’ютері Windows?


156

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

Я хочу грати з Python 3, поки ще можу запускати 2.x сценарії на одній машині.


1
У моєму дистрибутиві, Fedora, він встановлює Python 2.7 at /usr/bin/pythonта Python 3.3 at /usr/bin/python3. Дає різні імена для Pip та IPython Python3. Дуже зручно.
Полковник Паніка

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

Тут, мабуть, відповіді про те, як вибрати, яким пітоном працювати. Моя проблема полягала в тому, що інсталятор (3.6.2) не запустився, оскільки в ньому написано "Ще одна версія цього продукту вже встановлена". Виявляється, у мене вже було встановлено 3.6.3.
yoyo

Відповіді:


66

Офіційним рішенням співіснування, здається, є запуск Python для 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 року.
Smit Johnth


1
@Mooncrater ви можете перевірити, з ким буде використовуватися where.exe pip. Я думаю, що інсталятор Python 3 встановлює pip3псевдонім для свого pip, але ви також можете зробити щось подібне, як 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.
Крістіан

Це погана ідея, врешті-решт все перейменувати, а піп не працює таким чином.
бханса

щоб перестати працювати з проблемою pip на python3. вам потрібно НЕЗАЛЕЖНО "встановити піп" з початкового майстра інсталяції python3, потім перейменуйте python3.7 / python.exe в python3.exe, потім завантажте get-pip.py і запустіть python3.exe get-pip.py. Отже, pip3 знає, що перейменований python3.exe призначений для python3, а не оригінального /python3.7/python.exe
Junchen Liu

36

Ви можете встановити обидва.

Ви повинні написати це перед своїм сценарієм:

#!/bin/env python2.7

або, врешті-решт ...

#!/bin/env python3.6

Оновлення

Моє рішення чудово працює з Unix, після швидкого пошуку в Google , ось рішення Windows:

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

Те саме: перед вашим сценарієм.


Ну, його можна встановити в Linux, а також в Windows. Вам просто потрібно встановити змінну env .. ви можете це зробити в Windows ...
Патрік Дежардінс

7
Це рішення не працюватиме з Windows (якщо ви не викликаєте його з оболонки стилю unix (наприклад, cygwin)). #! обробляється оболонкою, а вікна не підтримують її. Я вірю в приклад, який ви google, ним керує веб-сервер, а не його запуск у Windows
Брайан

Так, на Apache в Windows ... запит на запитання запитається автоматично, ви можете це робити з Cygwin, Apache тощо ...
Патрік Дежардінс

@Daok: Я вас не порушив. Я вдячний за допомогу навіть за спробу допомоги.
монетний двір

4
Можна використовувати pylauncher, щоб зробити щось подібне до роботи (як описано в PEP 397 - Python launcher for Windows 2011.
martineau

33

З версії 3.3 Python представив утиліту Launcher for 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? Чи працює це теж для цього?
еморф

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.exe3,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" '.
Mandar Sadye

Я не знаю, у мене не було цієї проблеми
Charif DZ

@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 на одній машині.
монетний двір

О, і м'яте, це може допомогти додати інформацію у вашому першому коментарі до питання, це було трохи неясно.
Джеймс Макмахон

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 Launcher для Windows" .


3

Спробуйте використовувати Anaconda.

Використовуючи концепцію середовищ Anaconda, скажімо, що вам потрібен Python 3, щоб вивчити програмування, але ви не хочете знищувати ваше середовище Python 2.7 шляхом оновлення Python. Ви можете створити та активувати нове середовище під назвою "змії" (або що завгодно) та встановити останню версію Python 3 таким чином:

conda create --name snakes python=3

Простіше, ніж це звучить, подивіться тут на вступну сторінку: Початок роботи з Анаконда

А потім для вирішення вашої конкретної проблеми наявності версій 2.x та 3.x, які працюють поруч, див: Управління версіями Python за допомогою Anaconda


Інтро-ланка Anaconda розірвана.
alex

1
Виправлено посилання на "Початок роботи з Анаконда".
Cale Sweeney

2
@JeffreyCordero Я виправив посилання. Документи Anaconda можуть працювати, але вони не можуть приховати.
Cale Sweeney

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. У мене вже був встановлений Python3 на моєму D: накопичувачі . З навантаженнями в процесі розробки, я не хотів зіпсувати свою установку Python3. І мені потрібен був Python2 лише для кассандри Apache.

Тому я зробив наступні кроки:

  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 встановлено як "основний" пітон і 3.0 як мій "грати" пітон. 2.6 включений у PATH . Все працює добре.


1

Перш ніж я сміливо встановив обидва одночасно, у мене було так багато питань. Якщо я даю python, він піде на py3, коли я хочу py2? pip / virtualenv відбудеться під py2 / 3?

Здається, це зараз дуже просто.

Просто сліпо встановіть їх обох. Переконайтеся, що ви отримали потрібний тип (x64 / x32). Під час встановлення / після встановлення переконайтеся, що ви додали до змінних вашого середовища шлях .

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

Замініть х у команді вище, щоб встановити шлях.

Потім перейдіть до обох папок.

Перейдіть до

python3.6/Scripts/

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

Якщо pip3 вже існує, видаліть pip. Це дозволить переконатися, що просто pip буде працювати під python2 . Ви можете підтвердити:

pip --version

Якщо ви хочете використовувати pip з python3, тоді просто використовуйте

pip3 install 

Можна аналогічно зробити те ж саме з файлом python та іншими.

Ура!


1

Easy-Peasy, після установки обидві версії пітона додати шляху до змінних оточення, см налаштування змінної середовища. Потім перейдіть до папок python 2 та python 3 та перейменуйте їх відповідно на python2 та python3, як показано тут для python2та тут для python3. Тепер у cmd введіть python2 або python3 для використання потрібної версії див тут.


0

Я би припустив так, у мене на одному комп’ютері встановлені Python 2.4, 2.5 і 2.6.


Це моя робота над декількома версіями 2.x, але м'ята запитує, чи можуть вони працювати 2.x поряд із 3.x. Є кілька суттєвих відмінностей між ними. Дивіться: Відмінності між 2.x та 3.x
Cale Sweeney

0

Я зараз починаю з python. Я читаю книгу Зеда Шоу "Learn Python the Hard Way", для якої потрібна версія python 2.x, але я також беру клас, для якого потрібен python 3.x

Отже ось що я зробив.

  1. Завантажте python 2.7
  2. запустити оболонку живлення (вже має бути встановлено на Windows)
  3. запустіть python в POWERSHELL (якщо він не розпізнає, перейдіть до кроку 4)
  4. Тільки якщо powershell не розпізнає тип python 2.7 у наступному:

"[ЕКОЛОГІЯ] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C: \ PYTHON27 "," USER ")" (немає зовнішніх лапок)

  1. Тепер введіть python, і ви повинні побачити, як це сказано, python 2.7 bla bla bla

ЗАРАЗ для 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.