2016-11-25 163 views
0

我遇到以下問題:我從GitHub(textstat)中安裝了一個包含txt文件的Python包。 txt文件的內容(實際上只是一長串簡單的英文單詞)用於包中定義的某些功能。 現在,我通過用文本編輯器打開文件並保存它,在txt文件的列表中添加了更多的單詞,但不知何故,當我執行我的python代碼(在Jupyter Notebook中)時,似乎使用了舊列表,不是更新的那個。 我該如何解決這個問題?重新加載Python模塊

編輯:一些更多的信息,因爲reload()沒有解決我的問題。還重新啓動內核甚至整個計算機都沒有工作......

在textstat.py中,txt文件「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

的可能的複製[?我如何卸載(重裝)一個Python模塊(http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module) – mx0

+0

似乎像textstat(或pkg_resources)正在緩存關於easy_words.txt文件的信息。如果是這樣,我們需要弄清楚如何清除緩存。在Linux系統上,我可能會在此時通過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