2013-07-15 3 views
4

오히려 큰 모듈을 작성했습니다. 가져올 때 자동으로 .pyc 파일로 컴파일됩니다.파이썬 reload() 함수를 .pyc 대신 .py로 읽습니다.

인터프리터에서 모듈의 기능 (예 : 클래스 메소드)을 테스트하려면 imp 패키지의 reload() 함수를 사용합니다.

파일이 아닌 .pyc 파일을 다시로드하는 것이 문제입니다.

예를 들어 나는 내가 .py 파일을 변경할 것, 그것이 제대로 작동하지 않는 것을 파악, 인터프리터에서 함수를보십시오. 그러나 인터프리터에서 모듈을 다시로드하면 변경 내용이 인터프리터에 반영되지 않도록 .pyc 파일을 다시로드합니다. 나는 해석기를 종료하고 다시 시작해야하고 import을 사용하여 모듈을로드하고 .py 파일에서 .pyc 파일을 작성하십시오. 또는 매번 .pyc 파일을 삭제해야합니다.

더 좋은 방법이 있습니까? 예 : reload().pyc 개 파일보다 .py 개 파일을 선호합니까?

.pyc 파일을로드한다는 것을 보여주는 인터프리터 세션을 제외하고 여기에 있습니다.

>>> reload(pdb) 
<module 'pdb' from 'pdb.pyc'> 

편집 : 나는 .pyc 파일을 삭제 그리고 경우에도, 다른 .pyc 파일 내가 .pyc 파일 내가 다시로드를 사용할 때마다 삭제 가질 수 있도록 내가 다시로드를 사용할 때마다 생성됩니다.

>>> reload(pdb) 
<module 'pdb' from 'pdb.py'> 
>>> reload(pdb) 
<module 'pdb' from 'pdb.pyc'> 
+0

는'.pyc' 파일을 삭제 하시겠습니까? – kindall

+0

예, 필자의 글에서 언급했는데 때로는이 모듈을 사용하여 다른 대화 형 셸을 열어보고 싶습니다. 그리고 나서 새로운 pyc 파일이 생성 될 것입니다. – Sebastian

+0

가능한 복제본 [.pyc 파일을 피하는 방법] (http://stackoverflow.com/questions/154443/how-to-avoid-pyc-files) – dnozay

답변

0

, 당신은 당신은 당신의 현재 쉘에서 빠른 함수를 정의 할 수 있습니다, 당신은 또한

>>> !rm some_file.pyc 
>>> reload(some_file) 

을 할 수 있도록 !

를 앞에하여 쉘 명령을 수행 할 수 있습니다 :

>>> import os 
>>> def reload(module_name): 
...  os.system('rm ' + module_name + '.pyc') 
...  reload(module_name) 
... 

귀하의 모듈을 다시로드하고 싶을 때마다 전화하십시오.

+0

나는 iPython을 좋아하지 않는다. (가르침에 좋을 지 모르지만, 개인적인 용도로 선호하는 것은 아니다.) 나는 bash 터미널에서 파이썬을 열면된다. 그러나 thx. – Sebastian

+0

@astrognocci,이 두 개의 리로드 키워드가 충돌하지 않습니까? 나는 그것이 시스템 reload 키워드 대신에 스스로를 호출 할 것이라고 생각한다. – Zen

+0

이고 함수의 두 번째 줄은''rm '+ module_name이어야합니다 .__ name__ +'.pyc'' – Zen

0

reload (module)가 자동으로 처리하므로 더 이상 쓸모없는 * .pyc를 제거하지 않아도됩니다. 나는 보통 같은 사용이 목적

:

import module 
    def reinit(): 
     try: 
      reload(module) 
     except: 
      import traceback 
      traceback.print_exc() 

     call_later(1, reinit) 

    reinit()