2016-11-25 1 views
0

다음과 같은 문제가 있습니다. txt 파일이있는 GitHub (textstat)에서 Python 패키지를 설치했습니다. txt 파일의 내용 (실제로는 영어로 된 단어의 목록)은 패키지 내에 정의 된 일부 기능에 사용됩니다. 이제 텍스트 편집기로 파일을 열고 저장하여 txt 파일의 목록에 단어를 더 추가했습니다. 그러나 어떻게하면 파이썬 코드 (Jupyter Notebook에서)를 실행하면 이전 목록이 사용 된 것처럼 보입니다. 업데이트 된 것이 아닙니다. 어떻게 해결할 수 있습니까?Python 모듈을 다시로드하십시오.

EDIT : reload()가 내 문제를 해결하지 못했기 때문에 몇 가지 추가 정보가 있습니다. 또한 커널이나 컴퓨터 전체를 다시 시작하지 못했습니다.

textstat.py의 "easy_words.txt"(textstat.py와 같은 디렉토리에 있음)는 "easy_word_set"변수에 저장됩니다. "다음과 같은 방법으로 :

easy_word_set = set([ln.strip() for ln in pkg_resources.resource_stream('textstat', 'easy_words.txt')]) 

이제 내 Jupyter 노트북에 나는 평소와 같이 textstat 가져 : 어떻게 든

import textstat.textstat as ts 

ts.easy_word_set 

은 업데이트 된 목록을 제공합니다. 하지만 예를 들면

ts.textstat.gunning_fog(word) 

이전 목록이 사용됩니다.

+0

다시로드 (your_module)의 –

+0

가능한 복제 ([? 내가 (장전) 파이썬 모듈 언로드 어떻게] http://stackoverflow.com/questions/437589// do-i-unload-reload-a-python-module) – mx0

+0

textstat (또는 pkg_resources)와 같이 easy_words.txt 파일에 대한 정보를 캐싱합니다. 그렇다면 캐시를 지우는 방법을 알아야합니다. 리눅스 시스템에서는이 시점에서 strace를 통해 프로그램을 실행하여 읽고있는 파일을 확인할 수 있습니다. – Waxrat

답변

0

ipython의 자동 리로드 확장에 유용 할 수 있습니다 :

In [1]: %load_ext autoreload 

In [2]: %autoreload 2 

In [3]: from foo import some_function 

In [4]: some_function() 
Out[4]: 42 

In [5]: # open foo.py in an editor and change some_function to return 43 

In [6]: some_function() 
Out[6]: 43 
+0

답변 해 주셔서 감사합니다. 하지만 어떻게 든 커널을 다시 시작하고 수정 된 모듈을 가져 오더라도 이전 목록이 사용 된 것 같습니다. –

+0

이전 목록을 다시 불러 오는지 확인하십시오. 코드에 실수가있을 수 있습니다. – Inconnu

+0

모듈을 다시로드하는 데 도움이 되었다면 upvote를 수행하십시오. – Inconnu

관련 문제