Linux에서 Python에 #! / usr / bin / python 줄이 필요한 이유는 무엇입니까?


50

아주 간단한 질문 : 리눅스에서 파이썬은 왜 라인을 필요로합니까?

#!/usr/bin/python

파이썬 파일의 시작 부분에 Windows가 없기 때문에?

무엇을합니까? "파이썬으로 연결"이라는 설명이 약간 모호하기 때문에 ...


28
아래의 답변은 모두 정확하며 Windows에 왜이 줄이 필요하지 않은지 설명하지 않습니다. Windows는 파일의 확장자 (. 뒤에 나오는 부분 .)에 따라 파일의 종류를 결정합니다. Windows조차도 여기서 멀어지고 있습니다. Microsoft Word 파일의 처음 몇 줄을 살펴보면 실제로 Microsoft Word 파일임을 나타냅니다.
Charles Green

9
방 안에있는 코끼리는 파이썬 2와 3과 호환되지 않는 한 / usr / bin / python을 절대로 사용해서는 안된다는 이유입니다. 이유 : 아치는 그것을 PSF에 의해 인정 된 동작 인 python3에 링크합니다.
또 다른 사용자

5
묵시적이지만 아래 답변에 명시 적으로 명시되어 있지 않은 것은 아닙니다 . ts 자신의 이름으로 만 스크립트를 실행하려면 필요합니다. 항상 python myscript.py대신 실행할 수 있습니다 .
Chris H

3
@CharlesGreen 우리는 왜 윈도우가 작동하지 않는지 알지 못합니다. ;-) 그것은 최대입니다.
Rinzwind

2
@YetAnotherUser 파이썬 3이 출시 된 지 6 년 11 개월이 지났습니다.이 시점에서 사람들은 기본값을 3으로 설정하고 필요할 때 명시 적으로 2를 사용하는 것이 더 나을 것이라고 생각합니다.
JAB

답변:


58

파이썬 은 리눅스에서 특별한 요구 사항이 없습니다. "shebang"행을 사용하는 Unix / Linux 의 프로그램 로더 입니다. 이것은 실제로 제한이 아닌 기능이지만 잠시 후에 설명하겠습니다. "shebang"의 Wiki 페이지에 자세한 내용이 있지만 여기에서는 Windows와 비교할뿐만 아니라 개요를 제공하려고합니다.

먼저 Windows의 상황을 살펴 보겠습니다.

  • 파일을 열거 나 실행하려고하면 Windows는 먼저 해당 파일 의 확장자 를 검사 합니다. 이것은 파일 이름 의 마지막 부분으로 시작합니다 .. Python 파일의 경우 일반적으로 .py입니다.
  • Windows는 파일 확장자에 따라 수행 할 조치를 찾습니다.
    • 이 정보는 Windows 레지스트리에 기록됩니다. Python이 설치되면 일반적으로 Windows .py에 새로 설치된 응용 프로그램 Python (예 : Python 인터프리터)을 사용하여 파일을 열 도록 지시 합니다 .
    • 여러 파일 형식에는 기본 제공 동작이 있습니다. 예를 들어, 실행 파일 (예 : Python 인터프리터 자체)은로 끝나야 .exe하며 .bat파일은 Windows 배치 스크립트로 실행됩니다.
    • 특정 파일 유형에 대해 취한 조치는 사용자 정의 가능 합니다. 예를 들어,을 .py사용하여 파일 을 실행하는 대신 python.exe텍스트 편집기와 같은 다른 프로그램으로 파일을 열어야한다고 Windows에 알릴 수 있습니다 notepad.exe.
      • 이 경우 Python 스크립트 를 실행 하려면 수동으로 호출 python <scriptname>.py하거나 .bat파일을 작성해야합니다.

이제 파이썬 스크립트 맨 위에 shebang 줄 ( #!/usr/bin/python또는 #!/usr/bin/env python) 이 있으면 어떻게됩니까 ? 글쎄, #파이썬에서 주석 행은, 파이썬 인터프리터는 그냥 무시합니다. 이것이 유닉스 / 리눅스 세계에서 사용되는 대부분의 스크립팅 언어가 #주석 행을 시작 하는 이유 중 하나 입니다.

따라서 Windows가 그 #!라인을 "필요하지 않다"고 말하는 것은 약간 잘못된 것입니다 . 윈도우하지 않습니다 #! 라인을, 실제로 무엇을하도록 지시하는 파일 확장자에 의존합니다. 여기에는 몇 가지 단점이 있습니다.

  • 당신은 해야한다 파이썬 스크립트의 이름을 .py들을 자동적으로 인식하도록 순서로 끝.
  • Python2 스크립트와 Python3 스크립트를 쉽게 구별 할 수있는 방법은 없습니다.
  • 앞에서 언급했듯이 .py파일 형식 의 기본 시작 동작을 변경하면 Windows는 더 이상 해당 스크립트를 Python으로 자동 실행하지 않습니다. 이것은 의도하지 않게 수행 될 수 있습니다.

이제 유닉스 / 리눅스가 스크립트를 시작하는 방법을 살펴 보자.

가장 먼저 주목해야 할 것은 유닉스 / 리눅스는 Windows와는 달리 적어도 개념적으로 특정 프로그램을 사용하여 파이썬 스크립트를 "열기"위해 노력하고 있지 않다는 것입니다. OS 스크립트가 "execute bit"(이 답변의 범위를 벗어남)로 인해 실행될 수있는 스크립트 라는 것을 알고 있습니다. 따라서 실수 #!/usr/bin/pthon대신을 입력 #!/usr/bin/python하면이 텍스트가 포함 된 오류 메시지가 표시됩니다.

/usr/bin/pthon: bad interpreter: No such file or directory.

"통역사"라는 단어는 셰방 라인의 역할에 대한 실마리를 제공합니다 (기술적으로 지정된 프로그램은 cat텍스트 편집기 와 같은 통역사 이외의 다른 프로그램 일 수 있음 ). 파일을 실행하려고하면 다음과 같이됩니다.

  • 유닉스 / 리눅스 프로그램 로더는 해당 파일의 처음 2 바이트를 봅니다. 이 두 바이트가 #!인 경우 로더 는 파일 내용을 스크립트로 실행 하는 인터프리터 를 시작하는 명령으로 나머지 shebang 행 (shebang 자체 제외)을 명령으로 해석 합니다.
  • 프로그램 로더는 지정된 인터프리터를 시작 하여 원본 파일 의 경로 를 인수로 제공합니다.

여기에는 몇 가지 장점이 있습니다.

  • 스크립트 작성기는 어떤 인터프리터가 사용 될지 (Python2 / Python3 문제를 해결)를 더 잘 제어 할 수 있으며 때로는 인터프리터에 추가 인수를 전달할 수 있습니다 (자세한 내용은 Wiki 페이지 참조).
  • 스크립트의 파일 이름은 무시 되므로 원하는대로 Python 스크립트의 이름을 지정할 수 있습니다.

마지막으로, 유닉스 / 리눅스는 파이썬 스크립트를 실행하기 위해 shebang 라인이 필요 하지 않습니다 . 실제로 모든 shebang 행은 프로그램 로더가 인터프리터 를 선택할 수 있도록하는 것 입니다. 그러나 Windows에서와 마찬가지로 수동으로 수행 할 수 있습니다.

python <myscript>

1
Windows에서 쉽게 할 수 .py2.py3파이썬 2 / 파이썬 3 스크립트 확장. 따라서 Linux (+ x 비트)와 Windows (파일 확장자) 모두 파일 시스템에 메타 데이터가 필요합니다. 주요 차이점은 전송 중에 + x 비트가 더 쉽게 손실된다는 것입니다. 이것이 반드시 단점은 아닙니다.
MSalters

1
@MSalters 실행 비트에는 인코딩 된 정보가 훨씬 적습니다. 그리고 주어진 시스템에 여러 개의 Python2 인터프리터가있을 수 있습니다 (이전 작업에서 Ruby 및 다른 언어와 비슷한 상황이 있었음). shebang 라인을 통해 이것을 처리하는 것은 거의 사소한 반면 Windows의 상황은 여러 유사한 파일 유형을 관리하려고 시도할수록 다루기 어려워집니다.
Kyle Strand

또한 확장은 실제로 "메타 데이터"로 계산됩니까? 파일 이름의 일부일뿐입니다.
Kyle Strand

1
파일의 메타 데이터에는 전체 파일 이름, 생성 시간, 액세스 비트 등이 포함됩니다. 내용 자체 만 메타 데이터가 아닌 데이터입니다. "다중 통역사들"에 관해서는, 그것은 실제로 진짜 문제이며 정확히 왜 그것이 세방에 있지 않아야 하는가 입니다. 당신은 어떤이있는 경우 /usr/bin/i686/python/usr/bin/amd64/python? 완벽하게 합리적이지만에 대한 하드 코딩 된 가정을 가진 파이썬 스크립트를 깨뜨 /usr/bin/python립니다. 인터프리터의 선택은 스크립트 작성기의 선택이 아니라 스크립트 사용자의 선택입니다. 스크립트 작성기는 언어 (방언) 만 선택할 수 있습니다.
MSalters

1
@MSalters 음, 이것이 /usr/bin/envenv-setup 스크립트와 함께하는 것입니다. 이것의 Windows 버전은 무엇입니까? 파일을 regedit실행하기 직전 에 스크립트를 실행하여 .py원하는 인터프리터를 확보 하시겠습니까?
Kyle Strand

41

표시 한 줄은 파일 / 스크립트를 직접 실행할 때 사용할 프로그램 / 통역사와 스크립트가 실행될 때 해당 프로그램에 전달되어야하는 인수를 컴퓨터에 알리는 데 사용됩니다. 그러나 이것은 Python 의 요구 사항이 아니며 스크립트를 직접 실행하려는 경우 Linux 커널 / 시스템의 요구 사항입니다 (아래 구문으로 Python에 전달하지 마십시오).

실행 python script.py또는 이와 유사한 경우에는 필요하지 않습니다 . 사용할 인터프리터를 제공하지 않고 스크립트 / 파일을 직접 실행하려는 경우에만 필요합니다 python.


Bash 스크립트의 경우 다음과 같습니다.

#!/bin/bash [optional Bash arguments]
# Bash script code here
...
exit 0;

이것은 시스템에 실행될 때 시스템 /bin/bash의 쉘 / 쉘 스크립트 언어 중 하나를 통해 실행되어야 함을 시스템에 나타냅니다 .


파이썬 코드의 경우, 여기서는 실행 파일을 파이썬을 통해 실행하고 싶을 것이므로 어떤 인터프리터를 실행할 것인지 알려주십시오.

#!/usr/bin/python [optional Python arguments]
# Python code here
...
exit()

이것은 Bash와 마찬가지로 /usr/bin/python사용해야 함을 나타냅니다 (개인 시스템 구성에 따라 Python 2 또는 Python 3 일 가능성이 있음).


이러한 방법으로, 당신은 실행 ./filename.py하거나 ./executable또는 ./scripttorun직접.

처음에 그 줄이 없으면 파일 / 스크립트를 실행 가능으로 설정하고 Python 스크립트로 작업한다고 가정하면 줄이 python filename.py없으면 실행 하거나 유사해야합니다 #!/usr/bin/python. (Bash 스크립트의 경우 bash script.shPerl, Ruby 등과 같은 다른 스크립트 / 언어에 대해 또는 이와 유사 해야합니다 .)

위의 구문 강조는 각 섹션마다 언어별로 다르지만 실제로는 중요하지 않습니다.


1
추가 흥미로운 점은 인터프리터 (직접 호출 된 것처럼이 같은 방법으로 대부분의 경우에서 오두막 자체 후에 추가 매개 변수를 지정할 수 있다는 것 #!/bin/bash -x, #!/usr/bin/perl -lan등).
kos

7
@ kos : 정확히 하나의 추가 인수를 지정할 수 있다고 생각합니다.이 인수 /usr/bin/env python는 올바른 파이썬을 얻기 위해 사용해야 할 때 PITA였습니다 .
unperson325680

@progo 문제가 무엇인지 잘 env모르지만 문제 는 인수의 개수 가 아닌 것 같습니다 . #!/usr/bin/perl -l -a -n세 개의 인수가 있지만 작동합니다. 다시 말하지만 정확한 문제를 해결할 수는 없습니다.
kos

스크립트를 인수로 사용하여 인터프리터를 명시 적으로 호출 할 때 후자를로 시작할 이유가 없습니다 ./. 즉, 그냥 python filename.py또는 bash script.sh잘 작동합니다. 포함 할 유일한 이유 ./는 명령 이름에 셸을 검색하지 말고 $PATH(현재 디렉토리에서 파일을 찾지 못할 수 있음) 명령을 지정한 것이므로 지정한 경로를 그대로 사용하십시오. 그러나 이것은 명령 인수에는 적용되지 않습니다.
Marc van Leeuwen

@ kos : env커널에서 나머지 인수를받는 방법에 문제가있을 수 있습니다 . 그것들은 모두 공간 분할을 수행하지 않고 하나의 큰 논쟁으로 추정 될 수 있습니다. 분명히 말해서 죄송합니다. 더 이상 그 내용을 잘 기억하지 못합니다
unperson325680

16

라인 :

#!/usr/bin/python

은 'shebang'이라고하며 파일의 나머지 명령을 해석하는 데 사용될 인터프리터 바이너리의 경로를 나타냅니다. 일반적으로 스크립트의 첫 번째 줄입니다.

따라서이 줄 #!/usr/bin/python은 파일의 내용이에있는 python이진 파일로 해석됨을 나타냅니다 /usr/bin/python.

shebang 행은 커널에 의해 구문 분석되고 스크립트는 결국 인수로 호출됩니다.

python script_name

마찬가지로 다음의 경우 #!/bin/bash:

bash script_name

2
에서 하이픈을 본 적이 없다고 생각 shebang합니다. 단어는 "hash"와 "bang"으로 구성되므로 철자가 "she" 와 "bang" 의 조합 인 것처럼 보이기 때문에 철자가 명확하지 않습니다 .
Kyle Strand

캐릭터 이름을 지정하는 방법에 따라 hashbang( #= "hash") 또는 shebang( #= "sharp") 라고 부를 수 있습니다 #. 그러나 shebang실제로 더 일반적입니다. @KyleStrand
바이트 사령관

7

기술적으로는 필요하지 않습니다. 스크립트가 실행되는 환경에 대한 경로가 필요합니다. 미래의 스크립트는 / usr / bin / env를 포함시키는 것이 더 좋을 것입니다 .python을 지정하십시오. 이 기능을 사용하면 Python이 설치된 위치에 관계없이 스크립트가 Python 환경에서 실행됩니다. 호환성을 위해이 작업을 수행하려고합니다. 코드를 공유하는 다음 사람이 usr / bin / python에 파이썬이 설치되어 있는지 또는 해당 시스템 파일에 대한 권한이 있는지 확신 할 수 없습니다.

다음은 stack overflow의 유사한 Q & A입니다 .

스크립트에서 보이는 것은 다음과 같습니다.

#!/usr/bin/env python

또한 python3을 지정하는 방법에 대한 우려가 있습니다. 방법은 다음과 같습니다.

#!/usr/bin/env python3

5

Linux에서 Python은 #!(shebang) 줄을 요구하거나 요구하지 않을 수 있습니다 . 이는 Python 대화식 모드 또는 Python 스크립트에서 코드를 실행하여 Python 코드를 처리하는 방법에 따라 다릅니다.

Python 대화식 모드 에서는 사용자가 Python 코드를 직접 입력하고 실행할 수 있으므로 shebang 행이 필요하지 않습니다. 대화식 모드를 실행하려면 터미널을 열고 pythonPython 2.X 또는 python3Python 3.X를 입력하십시오.

$  python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$  python3
Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Python 스크립트를 사용하면 Python 코드를 일반 텍스트 파일로 작성하고 저장 한 다음 나중에 코드를 실행할 수 있습니다. 이것은 shebang 라인을 요구하거나 요구하지 않을 수 있습니다. 그러나 Linux에서 Python 스크립트를 사용하기 위해 shebang 행이 필요한 이유는 두 가지입니다.

  1. 실행 가능한 스크립트에서 파이썬 코드를 실행하는 것, 즉 코드를 실행하는 방법과 해석기를 사용하는 방법을 정의합니다.

  2. 특정 버전의 Python과 관련하여 Python 코드를 실행하는 것, 즉 Python 2.X 또는 Python 3.X와 호환되는 실행 코드

파이썬 스크립트로 연습

다음은 #!(shebang) 줄이 필요하거나 필요하지 않은 경우를 보여주기 위해 사용한 파일 목록과 내용입니다 .

$  ls -ln *.py
-rw-rw-r-- 1 1000 1000  94 Dec 14 18:37 hello1.py
-rwxrwxr-x 1 1000 1000 116 Dec 14 18:37 hello2e.py
-rw-rw-r-- 1 1000 1000 116 Dec 14 18:37 hello2.py
-rwxrwxr-x 1 1000 1000 117 Dec 14 18:37 hello3e.py
-rwxrwxr-x 1 1000 1000 120 Dec 14 18:37 hello3m.py
-rw-rw-r-- 1 1000 1000 117 Dec 14 18:37 hello3.py

$  file *.py
hello1.py:  ASCII text
hello2e.py: Python script, ASCII text executable
hello2.py:  Python script, ASCII text executable
hello3e.py: Python script, ASCII text executable
hello3m.py: Python script, UTF-8 Unicode (with BOM) text executable
hello3.py:  Python script, ASCII text executable
  • hello1.py 소스 코드 만 포함합니다.

    import sys
    sys.stdout.write("Hello from Python %s\n" % (sys.version,))
    print("Hello, World!")
  • hello2.py 소스 코드와 shebang 라인을 포함합니다.

    #!/usr/bin/env python
    import sys
    sys.stdout.write("Hello from Python %s\n" % (sys.version,))
    print("Hello, World!")
  • hello2e.py동일 hello2.py하고 실행 가능하게합니다.

  • hello3.pyhello2.py는 첫 번째 줄의 이름을으로 바꾸어 Python 3과 함께 실행하는 것을 제외 하고는와 동일 합니다 #!/usr/bin/env python3.

  • hello3e.py동일 hello3.py하고 실행 가능하게합니다.

  • hello3m.py텍스트 편집기 (예 : 마우스 패드)에 옵션으로 hello3.py저장 한 것을 제외하고 는 동일 하고 실행 가능하게 만들었습니다 Write Unicode BOM.

이 외에도 Python 스크립트를 실행하는 두 가지 방법이 제공됩니다. 두 방법 모두 아래에 설명되어 있습니다.

방법 1 : Python 프로그램으로 실행

다음은 Python 2 및 Python 3으로 소스 코드를 실행할 때의 명령 및 출력입니다.

$  python hello1.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2]
Hello, World!

$  python3 hello1.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4]
Hello, World!

두 버전의 Python 모두 스크립트를 성공적으로 실행할 수있었습니다. 따라서 또는 명령을 통해 Python 스크립트를 실행할 때 shebang 행이 필요 하지 않습니다 .pythonpython3

방법 2 : Python 스크립트로 실행

다음은 shebang 행을 사용하여 소스 코드를 실행할 때 실행 불가능하고 실행 가능한 경우를 포함하여 Python 2 및 Python 3 모두에 적용되지 않는 명령 및 출력입니다.

$  ./hello1.py
bash: ./hello1.py: Permission denied

$  ./hello2.py
bash: ./hello2.py: Permission denied

$  ./hello3.py
bash: ./hello3.py: Permission denied

$  ./hello2e.py 
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2]
Hello, World!

$  ./hello3e.py 
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4]
Hello, World!

shebang 라인의 유무에 관계없이 이러한 스크립트가 실행 불가능하기 때문에 처음 세 스크립트는 실패했습니다 (증거를 지원하려면 아래의 추가 예 참조). 마지막 두 스크립트에는 shebang 행이 있으며 실행 가능합니다.

분명히, 실행 가능한 스크립트는 본질적으로 shebang 줄 없이는 쓸모가 없습니다. 따라서 shebang 행이 필요하며 실행 가능한 스크립트에서 Python 코드를 실행할 때 스크립트가 실행 가능해야합니다.

shebang이 작동하지 않을 때

준비되고 테스트 된 예제에서 hello3m.py실행 스크립트로 실행하는 데 실패하고 오류가 반환되었습니다.

$  ./hello3m.py 
./hello3m.py: line 1: #!/usr/bin/env: No such file or directory

이것은 shebang이 작동하지 않거나 유효하지 않다는 알려진 제한 사항 입니다. 파일이 유니 코드 BOM (바이트 순서 표시)으로 저장되면 실행 가능한 Python 스크립트로 정상적으로 실행되지 않습니다.

추가 예

이 추가 예는 증거 증명으로 만 취급됩니다. 결과는 무해하지만 사용자는이 예제를 실행하지 않아야합니다.

나는라는 또 다른 파일을 생성 한 hello1e.py같은 포함 hello1.py하고 만든 실행 파일을. 이 스크립트를 실행하면 구문 오류가 발생했습니다.

$  ./hello1e.py 
./hello1e.py: line 2: syntax error near unexpected token `"Hello from Python %s\n"'
./hello1e.py: line 2: `sys.stdout.write("Hello from Python %s\n" % (sys.version,))'

이 스크립트를 실행하면 처음에는 마우스 커서가 더하기 부호로 바뀌고 아무 것도 나타나지 않습니다. 데스크탑 또는 터미널 창을 클릭 할 때까지 구문 오류가 표시되지 않습니다. 그런 다음이 스크립트는 스크립트 sys와 동일한 디렉토리에 파일을 작성합니다 .

$  file sys
sys: PostScript document text conforming DSC level 3.0, Level 1

sys파일은 파일 확장자없이, 포스트 스크립트 파일로 확인되었습니다. 이 파일은 문서 뷰어 (예 : Evince)에서 열 수 있으며 파일에는 실제로 이전에 클릭 한 창의 스크린 샷이 포함되어 있습니다. 내 경험상 파일 크기는 몇 메가 바이트에이를 수 있습니다.

다시 한 번, shebang 행이 필요하며 Python 스크립트를 실행 가능 스크립트로 실행할 때 스크립트가 실행 가능해야합니다. 그렇지 않으면 스크립트가 위에서 설명한대로 오작동합니다.

추가 사항

"만들기 실행 가능"또는 "실행 가능해야 함"이라는 용어는 스크립트 실행 권한을 나타냅니다. chmod +x FILENAME터미널 에서 명령을 실행하거나 파일 관리자 내 에서 속성 창 에서 "이 파일을 프로그램으로 실행하도록 허용"옵션 또는 이와 유사한 옵션을 확인하면 됩니다.

기존의 다른 답변은 거의 모든 것을 다루었지만이 답변은 문제를 설명하기 위해 실용적인 예를 사용하여 다른 접근 방식을 취했습니다. 코드 구문은주의해서 작성되었으므로 예제는 그대로 Python 2 또는 Python 3으로 실행될 수 있습니다.

파이썬 코드는 유비쿼터스 "Hello, World!"의 한 줄짜리 코드를 추가 하여 Windows 에서 Python 사용Unix 플랫폼 에서 Python 사용 에서 적응되었습니다 . 프로그램.

모든 코드와 명령은 완전히 테스트되었으며 기본적으로 Python 2.7 및 Python 3.4가 설치된 Xubuntu 14.04 시스템에서 작동합니다.


4

그것은 파일이 실행될 때 컴퓨터가 프로그램으로 파일을 실행한다는 것을 알고 있다는 것을 의미합니다 . /usr/bin/pythonbash와 같이 다른 언어와 구별하는 방법 #!/bin/bash입니다. 이것은 간단하게 실행할 수 있도록하기위한 것입니다.

./[file-to-execute]

그리고 다음과 같이 지정하지 않고 실행할 파일을 알 수 있습니다.

python ./[file-to-execute].py

#!부품은 일반적으로 shebang 또는 crunch bang이라고 합니다.


2
또한 해시 뱅.
Naftuli Kay

1

여러 버전의 Python이 설치되어 있으면 /usr/bin/env사용되는 인터프리터가 환경의 첫 번째 인터프리터인지 확인하십시오 $PATH. 대안은 다음과 같은 것을 하드 코딩하는 것입니다 #!/usr/bin/python.

유닉스에서, 해석되는 실행 파일 #!은 첫 줄의 시작 부분에 인터프리터 (및 필요한 플래그)를 붙여서 어떤 인터프리터를 사용해야하는지 나타낼 수 있습니다 .

이 규칙은 UNIX 기반 시스템에만 적용됩니다.


0

Python 2.x가 여전히 표준 인 Linux와 같은 OS에 유용하지만 대부분의 사람들은 3.x를 다운로드합니다.

2.x는 기본적으로 실행됩니다. 따라서 3.x 코드는 #! / usr / bin / env python3으로 시작하여 3.x에서 코드를 실행합니다. 베타 릴리스 또는 약간 오래된 버전을 사용하기로 선택한 경우 마이너 개정 (python 3.xyz)까지 지정할 수 있습니다.

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