2015-02-03 3 views
1

나는 파이썬 스크립트를 모두 #!/usr/bin/env python 또는 아무것도 사용하지 않고 (모든 shebang을 사용하지 않음) 모두 시작하는 경우를 넣습니다. 그 스크립트 중 일부는 2.7 (또는 어떤 2.x 버전)의 파이썬이 필요합니다. 그 중 일부는 파이썬 3.x을 필요로하며, 그 중 일부는 파이썬 버전 자체를 검사합니다.어떤 파이썬 버전이 사용되어야하는지 확인하는 방법

저는 시스템에 Python의 두 가지 버전, python2python3이 있습니다. 일반적인 python programm는 단지 심볼릭 링크입니다.

심볼 링크가 변경 될 수 있습니다.이 스크립트가 python2 또는 python3을 사용해야하는지 지정하기 위해 스크립트에서 새 빗을 편집하고 싶습니다. Python 스크립트를 '구문 분석'하여 python2 또는 python3으로 실행해야하는지 여부를 결정할 수있는 가능성/프로그램/스크립트가 있습니까?

+1

스크립트에서 '2to3'을 실행 해 본 결과 아무것도 발견되지 않았습니까? 명확한 표시는'print (x)'대신'print x'를 사용하는 것일 수 있습니다. py2와 py3 사이에 다른 중요한 차이점이 있습니다. '2to3'이 아무 것에도 불평하지 않는다면, python3을 위해 쓰여졌습니다 .3. – kdopen

+0

@kdopen 2to3은 공식 도구입니까? 아니면 외부 프로그램입니까? – Uroc327

+0

파이썬 배포판의 일부로 설치해야합니다. 그러나 그것은 단지 대략적인 지침 일뿐입니다. 실제로 스크립트를 자세히 조사하여 어떤 버전을 작성했는지 명확히해야합니다. – kdopen

답변

2

PEP 394 - The "python" Command on Unix-Like Systems :

    • ... python이 단지에 대비하여 파이썬 2와 3

    • 모두 소스 호환되는 스크립트의 오두막 라인에 사용되어야한다 궁극적으로 변경된 기본 버전 Python, Python 2 전용 스크립트는 파이썬 3과 호환되거나을 사용하여 소스 코드로 업데이트해야합니다. 시 뱅 라인에서 0. 일반적으로

    는 같은 스크립트는 파이썬 2, 그것은 (적어도 일부 스크립트) 원본을 읽고 파이썬 버전이 있어야 할 것을 스스로 결정해야 함을 의미 3. 모두 실행할 수 있습니다 익숙한.

    는 '해석'파이썬 스크립트가 python2 또는 python3에 의해 실행 얻을해야하는 경우 결정에 대한 가능성/프로그램/스크립트가 있습니까?

    당신은 python2python3 바이너리를 사용 스크립트를 컴파일 에 시도 할 수, 시도 : 만 python3 진 스크립트를 컴파일 할 수있는 경우

    $ python -mcompileall -h 
    

    , 당신은 오두막에 python3를 추가 할 수 있습니다.

    Modernize, Futurize, Pylint packagespython2 -only, python3- 전용 스크립트 만 자동으로 찾을 수 있습니다.

    lib2to3

    python2 또는 python3 마커와 같은 소스에서 print 문의 존재 (파이썬 2 마커) 또는 소스 (파이썬 3 마커)에서 yield from의 존재를 감지 할 수 있지만, 아마도 너무 낮은 수준입니다.

  • +0

    그래,하지만 그 '일반'파이썬 스크립트의 대부분은 버전 2.x 전용으로 작성된 것임을 알고있다. – Uroc327

    +0

    그러나 나는 내일 컴파일을 시도 할 것이다. :) – Uroc327

    0

    우선 #! 줄에 python2 또는 python3을 입력하십시오. * nix에서 파일을 직접 '실행'하려고하면 OS가 해당 행을 읽고 올바른 이진 파일을 선택해야합니다. Windows에서는 'usr/bin/env'을 생략하고 py.exe를 사용하여 PSF CPython 설치 프로그램과 함께 설치되는 파일을 실행하십시오. 예 : 내가 파일에 3 3.4.2 출력 변경 (2)를 변경하는 경우 tem.py 명령 줄

    C:\Users\Terry>py /programs/python34/tem.py 
    2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] 
    

    에서

    #! python2 
    import sys; print(sys.version) 
    

    가 포함되어 있습니다.

    +0

    질문은 특정 스크립트에 어떤 버전의 파이썬을 사용해야 할지를 결정할 수있는 방법이었습니다. 예를 들어'print' 또는'print()'가 사용되는지 확인합니다. – Uroc327

    관련 문제