2009-03-04 4 views
14

가능한 중복은 :
Way to have compiled python files in a separate folder?컴파일 된 바이트 코드 파일 (.pyc)을 다른 디렉토리에서 생성 할 수 있습니까?

파이썬 바이트 코드에 모듈을 컴파일, 그것은 당신의 평 파일에서 파일을 .pyc 파일 생성합니다.

제 질문은이 .pyc 파일을 모듈이있는 디렉토리와 다른 디렉토리에 쓸 수 있습니까?

예를 들어, 모듈의 큰 디렉토리가 있습니다. .pyc 파일로 흩어져있는 대신 소스 코드를 디렉토리에 보관하고 .pyc가 모두 저장되는 "바이트 코드"와 같은 하위 디렉토리를 갖고 싶습니다.

이것이 가능합니까?

+0

: 방금 새로 컴파일 된 파일 이름으로 폴더 이름 앞에 수 그러나 여기

나를 위해 작동하는 일부 코드입니다 (확인 폴더가 먼저 존재해야) find, xargs 및 move 명령을 사용하여 쉘 스크립트를 작성하십시오. –

답변

14

이 "Way to have compiled python files in a seperate folder?"

에 대한 답변

짧은 대답 : 아니요 - Python 3.2 이상을 실행하지 않는 한 - here을 참조하십시오. 파이썬 것입니다 3.2 전에 바이트 코드를 컴파일 할 수 브라이언 R. 본디의 제안에 따라 다른 곳을 추가하는 듯했으나 실제로 (당신이 자연 그대로 유지하려는 폴더가 아닌) 거기에서 실행하지 않는 :

는 명확히하기 위해 .py 파일이있는 바이트 코드를 출력합니다.

+0

더 나은 답변 : 3.2 이상에서만 작동합니다. 전에는 아니야. 이 질문은 복제본입니다. 위의 링크를 따르십시오. –

0

나는 어딘가에서 이것이 가능하지 않다는 것을 기억하고 있고, 파이썬 사람들은 내가 기억할 수는 없지만 그것을 가능하게하지 않는 이유가 있음을 기억하는 것 같다.

EDIT : 죄송합니다. 질문을 잘못 읽었습니다. 기본적으로 바이트 코드 파일을 다른 디렉토리에 저장하도록 Python 실행 파일을 구성 할 수는 없습니다. 바이트 코드 파일을 원하는 위치에 넣을 수있는 작은 파이썬 컴파일러 스크립트를 작성할 수 있습니다 (또는 찾을 수 있습니다).

7

확인 py_compile module, 특히 :

py_compile.compile(file[, cfile[, dfile[, doraise]]]) 

개의 cfile 당신이 관심있는 매개 변수가

위의 링크에서 :.

... 바이트 - 코드는 cfile에 쓰여지고 은 기본적으로 file + 'c'로 ...

0

스크립트를 작성하여 컴파일 한 다음 이동할 수 있습니다. 뭔가 같이 :

for i in `ls *.pyc` 
do 
mv $i $DEST_DIR 
done 

(단축 할 수 있습니다 놀라 울

for i in *.pyc 
do 
    mv $i $DEST_DIR 
done 

또는,

mv *.pyc $DEST_DIR 

에)

+0

나는 그 기능이'rm * .pyc'와 같다고 생각하지만 코드의 두 가지 버전을 추가했다. 컴파일 된 파일은 옮길 수있다; 그래서? – tzot

2

경우에 "쓰레기"참으로 문제입니다, 당신은 항상 .zip 파일에 .py, .pyc 및/또는 .pyo 파일을 포장 할 수와 sys.path에 추가합니다.

3

나는이 답변을 찾고 있었고 너무 많이 찾을 수 없었습니다. 하지 파이썬 자체에, 당신이 할 수있는 경우

import py_compile 
import os 
import glob 
import shutil 

path = '' 
for infile in glob.glob(os.path.join(path, '*.py')): 
    print "current file is: " + infile 
    strDestination = 'compiled/' + infile + 'c' 
    py_compile.compile(infile,strDestination) 
관련 문제