#! / usr / bin / python3의 목적


160

나는 이것을 몇 가지 스크립팅 언어로 보았지만이 예제에서는 파이썬을 사용하고 있습니다. 많은 튜토리얼에서는 #!/usr/bin/python3첫 번째 줄 부터 시작 합니다. 왜 우리가 이것을 가지고 있는지 이해할 수 없습니다.

  • 운영 체제가 파이썬 스크립트임을 알면 안됩니다 (명확하게 참조하기 때문에 설치되어 있음)
  • 사용자가 유닉스 기반이 아닌 운영 체제를 사용하는 경우
  • 어떤 이유로 든 언어가 다른 폴더에 설치됩니다
  • 사용자의 버전이 다릅니다. 특히 정식 버전 번호가 아닌 경우 (Python3와 Python32처럼)

위의 이유 때문에 파이썬 스크립트가 깨지는 것을 볼 수 있습니다.



9
나는이 질문에 Shebang 현을 복사하기 만합니다.
omerjerk

답변:


260

#!/usr/bin/python3A는 오두막 라인 .

shebang 행은 인터프리터가있는 위치를 정의합니다. 이 경우 python3통역사는에 있습니다 /usr/bin/python3. 오두막 라인도 될 수있다 bash, ruby, perl예를 들면, 또는 다른 스크립팅 언어 '인터프리터 : #!/bin/bash.

shebang 줄이 없으면 운영 체제는 스크립트에서 실행 플래그를 설정하고 다음과 같이 실행하더라도 파이썬 스크립트임을 알지 못합니다 ./script.py. python3에서 기본적으로 스크립트를 실행하려면 스크립트를 호출 python3 script.py하거나 shebang 행을 설정하십시오.

#!/usr/bin/env python3언어 통역사가 다른 위치에 설치되어있는 경우 다른 시스템에서 이식성을 위해 사용할 수 있습니다 .


8
그래서 #! /usr/bin/env python3선택해야 #! /usr/bin/python3합니까?
winklerrr

4
@winklerrr 예, 더 널리 사용됩니다.
MerreM

20

이것을 해시 뱅이라고합니다. 쉘에서 스크립트를 실행하면 스크립트를 해석하기 위해 어떤 프로그램을 시작해야하는지 파악하기 위해 첫 번째 행을 검사합니다.

Unix 기반이 아닌 OS는 스크립트 실행 방법을 파악하기 위해 자체 규칙을 사용합니다. 예를 들어 Windows는 파일 이름 확장자를 사용하며 #첫 번째 줄은 주석으로 처리됩니다.

파이썬 실행 파일의 경로가 잘못되면 당연히 스크립트가 실패합니다. 표준 규칙에 지정된 위치에서 실제 실행 파일에 대한 링크를 쉽게 만들 수 있습니다.


12

이 줄은 스크립트를 실행할 프로그램 실행 파일을 찾는 데 도움이됩니다. 이 shebang 표기법은 대부분의 스크립팅 언어 (적어도 성숙한 운영 체제에서 사용됨)에서 상당히 표준입니다.

이 라인의 중요한 측면은 지정 인 인터프리터가 사용됩니다. 예를 들어, 개발 중심의 많은 Linux 배포판에서 여러 버전의 Python을 동시에 설치하는 것이 일반적입니다.

Python 2.x와 Python 3은 100 % 호환되지 않으므로이 차이는 매우 중요합니다. 그래서 #! /usr/bin/python#! /usr/bin/python3동일하지 않습니다 (과도 같은 매우 동일 #! /usr/bin/env python3곳이 페이지에 언급 한 바와 같이.


6
  1. 그리고이 줄은 방법 입니다.

  2. 무시됩니다.

  3. 실행되지 않으며 올바른 위치를 가리 키도록 변경해야합니다. 또는 env사용해야합니다.

  4. 실행에 실패하고 다른 버전에서 실행되지 않을 수 있습니다.


3

3.7 파이썬 문서 에서 shebang 라인이 창에서 어떻게 작동하는지 명확히하려면 :

  • 스크립트 파일의 첫 번째 줄이 #!로 시작하면“shebang”줄입니다. Linux 및 기타 Unix와 같은 운영 체제는 이러한 행을 기본적으로 지원하며 이러한 시스템에서 일반적으로 스크립트 실행 방법을 나타내는 데 사용됩니다.
  • Windows 용 Python Launcher를 사용하면 Windows의 Python 스크립트와 동일한 기능을 사용할 수 있습니다
  • Python 스크립트의 shebang 라인을 Unix와 Windows간에 이식 할 수 있도록하기 위해 실행기는 사용할 인터프리터를 지정하기 위해 많은 '가상'명령을 지원합니다. 지원되는 가상 명령은 다음과 같습니다.
    • / usr / bin / env 파이썬
      • shebang 라인의 / usr / bin / env 형식에는 하나의 추가 특수 속성이 있습니다. 설치된 Python 인터프리터를 찾기 전에이 양식은 실행 파일 PATH에서 Python 실행 파일을 검색합니다. 이는 PATH 검색을 수행하는 Unix env 프로그램의 동작에 해당합니다.
    • / usr / bin / python
    • / usr / local / bin / python
    • 파이썬

2

실제로 파일 형식에 대한 결정은 매우 복잡하므로 운영 체제는 알 수 없습니다. 그것은 기반으로 많은 추측을 할 수 있습니다-

  • 신장
  • UTI
  • 몸짓 광대극

그러나 명령 줄은 그 복잡한 말도 의미가 없었던 때부터 제한된 하위 호환 레이어에서 실행되기 때문에 모든 것을 방해하지 않습니다. 두 번 클릭하면 최신 OS가 그 사실을 알 수 있지만 터미널에서 실행하면 아니오입니다. 터미널은 멋진 OS 특정 파일 유형 API를 신경 쓰지 않기 때문입니다.

다른 점들에 관해서. 편리합니다. 달리는 것도 가능합니다

python3 path/to/your/script

파이썬이 지정된 경로에 없으면 작동하지 않지만 우리는 다른 방법이 아닌이 작업과 같은 물건을 만들기 위해 물건을 설치하는 경향이 있습니다. 실제로 * nix를 받고 있는지는 중요하지 않습니다.이 라인을 고려할 것인지는 쉘에 달려 shellcode있습니다. 예를 들어 bashWindows에서 실행할 수 있습니다 .

실제로이 줄을 완전히 생략 할 수 있습니다. 호출자가 통역사를 지정해야한다는 의미입니다. 또한 통역사를 비표준 장소에 두지 말고 통역사를 제공하지 않고 스크립트를 호출하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.