Могу ли я установить Python 3.x и 2.x на одном компьютере с Windows? - PullRequest
135 голосов
/ 04 декабря 2008

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

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

Ответы [ 17 ]

63 голосов
/ 09 ноября 2012

Официальным решением для сосуществования является 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
36 голосов
/ 04 декабря 2008

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

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

#!/bin/env python2.7

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

#!/bin/env python3.6

Обновление

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

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

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

35 голосов
/ 25 августа 2015

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

  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.

31 голосов
/ 29 июня 2016

Начиная с версии 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. open Командная строка
  4. введите py -2.x для запуска Python 2.x
  5. введите py -3.x для запуска Python 3.x
9 голосов
/ 12 января 2009

Я использую 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.

7 голосов
/ 18 апреля 2009

Вот, пожалуйста ...

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. Если это не работает, напишите здесь исправления.

6 голосов
/ 19 октября 2017

Когда вы добавляете обе переменные окружения, возникает конфликт, потому что два исполняемых файла имеют одинаковые имена: python.exe.

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

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

enter image description here

4 голосов
/ 04 декабря 2008

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

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

3 голосов
/ 03 марта 2009

При установке 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, которая искала бы строку "shebang" (аналогично Linux et al) в первой строке и запуска Python 2.x или 3.x по мере необходимости. Подробности см. В «Средстве запуска Python для Windows» .

3 голосов
/ 16 мая 2017

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

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

conda create --name snakes python=3

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

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

...