파이썬 파일을 컴파일하는 방법?


57

나는 파이썬을 배우기 시작했으며 우분투의 새로운 사용자이기도합니다. .py파일 을 컴파일하는 방법을 알아야 합니다. 나는 명령으로 시도했다

python "hello.py"

파이썬을 컴파일하는 다른 방법은 무엇입니까?

답변:


58

Bryan의 대답에 덧붙여 터미널에서 파일이나 많은 파일을 컴파일하려면 py_compile모듈을 다음과 같은 방식으로 스크립트로 실행할 수 있습니다.

python -m py_compile fileA.py fileB.py fileC.py ...


9
속도를 원하기 때문에 컴파일 하는 경우 "기본 최적화 설정" -O과 같은 플래그를 추가 할 수도 있습니다 python -O -m py_compile …. 주로 assert명령문과 if __debug__코드를 제거하므로 대부분의 코드에는 영향을 미치지 않습니다. 참조 man python"할 ... 파이썬 최적화 무엇?" 자세한 내용은.
Rory O'Kane

26

또한 파일을 실행하기 위해 파일을 컴파일 할 필요 가 없습니다 .py. 파이썬은 해석 된 언어이며 다음을 사용하여 스크립트를 직접 실행할 수 있습니다.

python hello.py

또는 스크립트 #!/usr/bin/env python맨 위에 추가 하여 파일을 실행 가능하게 chmod +x hello.py한 다음 실행 하여 스크립트를 실행 가능하게 만드십시오 .

./hello.py

파이썬 이 성능상의 이유로 .py스크립트를 바이트 코드 .pyc파일로 내부적으로 컴파일한다는 사실 은 구현 세부 사항이며, 그렇게 할 이유가 없으면 파이썬 자체가 컴파일 시점과 컴파일 시점을 결정하게하십시오.


왜 이것이 효과가 있는지 혼란 스럽습니다. 파이썬 인터프리터가 스크립트를 실행하기 위해 스크립트를 읽을 필요가 없습니까? 실행 권한 만 부여하면 ( chmod +x) 인터프리터가 스크립트를 어떻게 읽습니까?
yellow01

@ yellow01 : "shebang"을 포함하는 스크립트를 실행할 때, 즉 첫 줄이로 시작 #!/path/to/interpreter하면 커널은 실제로 선언 된 모든 것을 실행하여 스크립트 경로를 인수로 전달합니다. 내 예에서, 당신이 실행할 때 ./hello.py실제로 실행되는 것은 /usr/bin/env python ./hello.py입니다. 참조 en.wikipedia.org/wiki/Shebang_(Unix)
MestreLion

@ yellow01 귀하는 MestreLion이 설명하는 프로세스를 통해 통역사가 일단 읽기 권한을 필요로하는 것이 맞습니다. 그러나 chmod +x권한 부여는 실행되며 기존 권한을 건드리지 않으므로 이제는 실행 가능할뿐 아니라 읽을 수 있습니다.
스펙트럼 스펙트럼

11

이 링크 확인 파이썬에서 컴파일

페이지 중간에서 가져올 수있는 py_compile 모듈에 대해 설명합니다. 구문은 다음과 같습니다.

import py_compile

py_compile.compile("file.py")

이 컴파일 방법은 python file.py 실행과 같이 모듈을 실행하지 않습니다.

전체 디렉토리 트리를 컴파일하는 메소드도 있지만 링크가 어떻게 실행되는지 확인하도록하겠습니다.

도움이 되었기를 바랍니다.



4

다양한 방법을 사용하여 Python 스크립트를 이진 코드로 컴파일 할 수 있지만 Nuitka를 사용하는 것이 더 효율적이라는 것을 알았습니다.

Nuitka는 거의 모든 버전의 Python을 지원하는 Python-to-C ++ 컴파일러입니다.

명령 구문은 다음과 같이 쉽습니다.

nuitka hello.py

고토 http://nuitka.net/doc/user-manual.html 더 많은 정보를 얻을 수 있습니다.


6
더 효율적인 방법? 왜 그것을 사용하고 싶습니까?
muru

nuitka는 실제로 매우 유용합니다. 예를 들어 Python이 설치되지 않은 컴퓨터에 Python 프로그램을 제공 할 수 있습니다. 그러나 nuitka가 Python 프로그램을 C ++ 기계 코드로 컴파일 할 때이를 피할 수 있습니다.
user258532
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.