2013-04-17 3 views
5

필자가 이해한다면 Python 컴파일 파일은 크로스 플랫폼입니다. 그렇다면 왜 대부분의 라이브러리를 배포하고 설치해야합니까?pyc 라이브러리가 pyc로 제공되지 않는 이유는 무엇입니까?

배포자 측에서 게으름인가, 아니면 단순히 pyc 파일을 배포 할 수 있다고 말하는 것이 잘못 되었습니까? 그렇지 않은 경우 사용자가 라이브러리를 빌드하고 설치하지 않고도 라이브러리가있는 사전 스크립트로 파이썬 스크립트 파일을 배포하려면 어떻게해야합니까?

+5

그리고 성능 향상이 유일한 것임을 알았습니다. 당신은 "컴파일"에 의해 초기의 '가져 오기'에 있습니다. 그렇지 않으면 모든 것이 정확히 같은 속도 AFAIK에서 실행됩니다. 즉, 'pyc' 또는'py'에서 실행되는 성능 차이를 알 수 없습니다. – mgilson

답변

7

포함 된 코드의 형식이 각 (주요) Python 릴리스에서 변경 될 수 있기 때문에 소스 코드가 최소한 일 수 있으며이 호환 될 수 있습니다. 형식은 가장 잘 알려진 두 CPython and PyPy이다, 몇 가지가있는 구현 (사이 다를 수 있습니다.

가 된 .pyc 파일의 내부 구조에 대한 자세한 내용은 this article를 참조하십시오.

4

그들은 크로스 플랫폼입니다, 다른 버전의 CPython은 하나의 동일한 .pyc 파일에 문제가있을 수 있습니다.

그리고 PyPy, IronPython, Jython 등과 같은 다른 구현물을 보면 , .pyc 파일에 전혀 문제가 없을 것입니다.

게다가 .pyc 파일은 하나의 .py 파일에 해당합니다. (아마도) 염두에두고있는 것은 C로 쓰여진 부분을 포함하는 라이브러리입니다. 플랫폼 의존적 인 파일 (.pyd, .dll, .so 등)로 컴파일되어 작업해야합니다. 많은 개발자들이 지원되는 모든 플랫폼을 지원하지 않기 때문에 소스로 제공하고이를 사용자의 시스템에두고 컴파일합니다.

+0

마지막 부분에 대한 참고 사항 : 컴파일 모듈이있는 Windows에서는 확장 모듈의 바이너리 배포가 일반적입니다. – delnan

0

.py 파일에서 .pyc 파일을 만드는 프로세스는 인터프리터에서 투명하게 수행됩니다. 일부 설치 관리자가 설치시 생성하는 이유는 순전히 스크립트가 처음 실행될 때 생성되는 것을 피하기 위해서입니다. 일반적으로 속도상의 이유 때문에 .pyc가 시스템 전체 (사용자가 아닌 사용자)로 끝날 수 있습니다. 쓰기 가능) 디렉토리. 컴파일 된 언어 또는 심지어 C로 작성된 파이썬 모듈과 달리 이 아니며 이러한 파일이 처음 존재한다는 기술적 요구 사항입니다. 그렇다면 자신의 스크립트를 직접 python에 넣고 가져올 수 없습니다 컴파일 단계없이 실행하십시오.

설치하기 전에 빌드 단계를 엄격하게 요구하는 라이브러리에는 네이티브 코드로 컴파일되는 구성 요소가 있습니다. 확실히 은 플랫폼 간이 아닙니다. 순수한 파이썬 라이브러리의 경우, 모듈의 소스 디렉토리 트리를 PYTHONPATH의 어딘가에두면 충분합니다.

관련 문제