2016-11-13 8 views
1

This answer은 .py 파일을 실행할 때 .pyc 파일이 생성되는 것을 알 수 있습니다. 이해하면 재실행 할 때 로딩 시간을 절약 할 수 있습니다. 그래서 .pyc 파일을 만든 후에 .py 파일의 내용이 무엇인지 궁금하게 생각합니다.공유/백업 할 때 .py 또는 .pyc 파일을 사용 하시겠습니까?

코드를 백업하거나 공유 할 때 중복되거나 관계없는 파일을 포함하고 싶지 않습니다. 어떤 파일 형식을 집중해야합니까?

기타 질문 : 다른 스크립트를 호출하는 스크립트가 하나 있습니다. 실행 후, 호출 된 스크립트에는 .pyc 파일이 기록되었지만 호출을 수행하는 마스터 스크립트는 작성하지 않았습니다. 왜 그랬을까요?

+2

코드를 편집하거나 디버그하고 싶다면'.py'가 필요합니다. 두 번째 질문은 http://stackoverflow.com/questions/3878479/why-are-main-runnable-python-scripts-not-compiled-to-pyc-files-like-modules를 참조하십시오. – AChampion

+0

그래서'.py'는 본질적으로 'master'파일이고'.pyc'는 항상 그것으로부터 재생성 될 수 있습니까? – joechoj

+0

'.pyc'는 컴파일 된 파일 (소스 코드가 들어있는'.py '파일)입니다.이 파일에는 바이트 코드 – Khaled

답변

1

파이썬 스크립트를 실행하기 만하면 은 모두이고 소스 코드에서 생성 된 바이트 코드는 .pyc입니다. .pyc 파일 실행에 대한 자세한 내용은 here을 참조하십시오. 나는 detials의 일부가 약간 구불 구불 한다는 것을 경고 할 것이다.

그러나 파이썬 인터프리터에서 자동으로 생성 된 파일이므로 소스 코드를 포함하고 .pyc 파일을 제외하는 것이 좋습니다. 게다가, 나중에 또는 다른 사람이 나중에 소스 코드를 수정/재검토하려는 경우 .py 파일이 필요합니다. 또한 일반적으로 소스 코드를 포함하는 것이 가장 좋습니다.

2

최상위 스크립트가 실행될 때가 아니라 모듈을 가져올 때 .pyc 파일이 생성됩니다. 전화로 무슨 뜻인지 모르겠지만 명령 줄에서 마스터 스크립트를 실행하고 다른 스크립트를 가져온 경우 가져온 스크립트 만 .pyc를 가져옵니다.

.pyc 파일을 배포하는 경우, 버전은 부 버전입니다. 자신의 파이썬을 번들로 묶거나 여러 개의 파이썬 버전 민감한 파일을 배포한다면 어쩌면. 그러나 .py 파일을 배포하는 것이 가장 좋습니다.

Python의 스크립트 및 모듈 규칙은 설치 모델을 고려하기 전까지 약간 이상하게 보입니다. 일반적인 설치 모델은 실행 파일이 시스템의 PATH 어딘가에 설치되고 공유 라이브러리가 라이브러리 경로의 어딘가에 설치된다는 것입니다.

파이썬의 setup.py도 똑같습니다. 최상위 스크립트는 PATH로 이동하지만 모듈과 패키지는 라이브러리 경로로 이동합니다. 예를 들어 내 시스템에서 pdb3 (최상위 스크립트)은 /usr/bin/pdb3이고 os (가져온 모듈)은 /usr/lib/python3.4/os.py입니다. 파이썬이 pdb3에서 pdb3.pyc으로 컴파일된다고 가정하십시오. 글쎄, 나는 여전히 pdb3라고하고 .pyc는 쓸모가 없다. 그렇다면 왜 경로를 혼란시키지?

루트 또는 관리자로 실행되도록 설치 프로그램에 공통적으로 해당 경로에 대한 쓰기 권한이 있습니다. 하지만 나중에 일반 사용자로 쓰기 권한을 가지지는 않습니다. 설치 중에 setup.py .pyc 파일을 생성 할 수 있습니다. 당신은 당신이 가지고있는 어떤 파이썬 이건간에 올바른 .pyc 파일을 얻습니다. 설치하는 동안 root/admin으로 실행하고 있기 때문에 여전히 디렉토리에 접근 할 수 있습니다. 일반 사용자가 디렉토리에 액세스 할 수 없기 때문에 .pyc 파일을 나중에 빌드하려고하면 문제가 발생합니다.

따라서 가장 좋은 방법은 .py 파일을 배포하고 설치 중에 setup.py 빌드 .pyc를 사용하는 것입니다.

+0

'call'은 다른 스크립트를 열고 실행한다는 의미입니다. 올바른 용어를 사용하지 않습니까? 특히, 나의 마스터 스크립트에는 다른'.py' 파일에 들어있는 외부 모듈을 가져 와서 그 모듈의'main()'함수를 실행하는 몇 줄이 있습니다. – joechoj

+0

@ joechoj - 모호합니다. 모듈을 가져 와서 그 함수를 호출 할 수 있습니다. (.pyc를 얻습니다.)'subprocess' (no .pyc)와 같은 것을 사용하여 스크립트를 자식 프로세스로 실행할 수는 있지만 스크립트를 호출 할 수는 없습니다. "다른 스크립트를 실행합니다"라는 말은 독립적 인 하위 프로세스로 실행되는 것을 의미하지만 여기서 의미하는 바가 확실하지 않습니다. 간단히 말해서,'import' 키워드를 사용했다면 그것을 가져 오면 .pyc가 생깁니다. – tdelaney

+0

@ joechoj - 나는 여기에서 페티 닉을 울리고 있습니다. 일반적으로 더 가벼운 언어가 좋습니다. 이 경우, .pyc 파일이 언제 생성되는지 알아 내면 차이가 있습니다. – tdelaney