[python] 동일한 Windows 컴퓨터에 Python 3.x 및 2.x를 설치할 수 있습니까?

Windows를 실행 중이며 명령 줄에서 프로그램을 실행할 때 셸 / OS가 레지스트리 설정에 따라 Python을 자동으로 실행합니다. 동일한 컴퓨터에 2.x 및 3.x 버전의 Python을 설치하면 문제가 발생합니까?

같은 컴퓨터에서 2.x 스크립트를 계속 실행하면서 Python 3을 가지고 놀고 싶습니다.



답변

공존을위한 공식 솔루션 은 Python 3.3.0 에 포함 된 Windows 용 Python Launcher , PEP 397로 보입니다 . 릴리스 덤프 설치 및 에 발사기 ( 다음과 관련된) 과 각각 스크립트.py.exepyw.exe%SYSTEMROOT%C:\Windowspypyw

새 실행기를 사용하려면 (자신의 연결을 수동으로 설정하지 않고) “확장자 등록”옵션을 활성화 된 상태로 두십시오. 왜 그런지 잘 모르겠지만 내 컴퓨터에서는 Py 2.7을 “기본”(런처의)으로 두었습니다.

명령 행에서 직접 호출하여 스크립트를 실행하면 실행기를 통해 스크립트를 라우팅하고 shebang (있는 경우)을 구문 분석합니다. 런처를 명시 적으로 호출하고 스위치를 사용할 수도 있습니다 py -3 mypy2script.py.

모든 방식의 세방이 작동하는 것 같습니다

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

원치 않는 학대뿐만 아니라

  • #! notepad.exe

답변

내 설정은 다음과 같습니다.

  1. Windows 설치 프로그램으로 Python 2.7 및 3.4를 모두 설치하십시오 .
  2. C:\Python34(기본 설치 경로)로 이동하여 python.exe를 python3.exe로 변경하십시오.
  3. 포함 할 환경 변수 편집C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

이제 명령 행 python에서 2.7 및 python33.4에 사용할 수 있습니다 .


답변

둘 다 설치할 수 있습니다.

스크립트 앞에 이것을 작성해야합니다.

#!/bin/env python2.7

또는 결국 …

#!/bin/env python3.6

최신 정보

내 솔루션은 Google 에서 빠른 검색 후 Unix와 완벽하게 작동 하며 Windows 솔루션은 다음과 같습니다.

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

같은 것 : 스크립트 앞에서.


답변

버전 3.3부터 Python은 Windows 용 Launcher 유틸리티 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를 시작하십시오.

답변

쉘의 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.batPATH 어딘가에 넣으십시오. 선호하는 부 버전 (즉, 최신 버전)의 파일을로 복사하십시오 pythonX.bat. (예 🙂 어디서나 copy python2.6.bat python2.bat사용할 수 있습니다 python2 file.py.

그러나 이것은 Windows 파일 연결 상황에 도움이되지 않거나 심지어 영향을 미치지 않습니다. 이를 위해서는 #!라인 을 읽고 .py 및 .pyw 파일과 연결 하는 시작 프로그램이 필요 합니다.


답변

환경 변수에 두 가지를 모두 추가하면 두 실행 파일의 이름이 동일하기 때문에 충돌이 발생합니다 python.exe.

그중 하나의 이름 만 바꾸십시오. 제 경우에는 이름을로 변경했습니다 python3.exe.

내가 도망 그래서 python그것을 실행할 python.exe2.7 인 내가 실행할 때 python3이 실행됩니다 python3.exe이는 3.6

여기에 이미지 설명을 입력하십시오


답변

여기 있습니다 …

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)

방금이 스레드를 읽었습니다. (필요한 것이기 때문에). 우분투와 Windows 모두에 Pythons 2.6.1과 3.0.1이 있습니다. 그래도 문제가 해결되지 않으면 여기에 수정 사항을 게시하십시오.