2017-07-07 81 views
0

我最近買了一臺新電腦(我的第一臺Mac,之前有一臺電腦)。我有一個充滿數據分析功能的模塊,用於我的研究,直到現在我還沒有任何理由編輯模塊。但突然間,當我將模塊導入Jupyter筆記本時,新功能未被「查看」。iPython筆記本電腦中看不到的新功能

import altdata as alt 
alt.retrieve_data_from_umiami_latlonam('GISS','AQUA', 'ts') 

而這會引發以下錯誤:

----------------------------------------------------------------------- 
---- 
AttributeError       Traceback (most recent call 
last) 
<ipython-input-3-9ccbc97fd6b8> in <module>() 
1 
----> 2 alt.retrieve_data_from_umiami_latlonam('GISS','AQUA', 'ts') 

AttributeError: 'module' object has no attribute 'retrieve_data_from_umiami_latlonam' 

我不能爲我的生活出了什麼問題。嘗試通過命令行時,它可以很好地工作,但由於某些原因,新功能在筆記本中不起作用。有任何想法嗎?

UPDATE

看來,當我在該模塊的位置(/ mymodules)的目錄中打開筆記本它的工作原理。

當我在包含mymodules的目錄中打開它,並使用

import sys 
sys.path.append(r'/mymodules') 
import altdata as alt 

我得到的錯誤。有任何想法嗎?

+1

您可能在PYTHON_PATH中列出了多個路徑中的模塊。而不是'sys.path.append(r'/ mymodules')'將其添加到路徑的開頭,這應該可以解決問題。即,'sys.path.insert(0,r'/ mymodules')' – Sebastian

+0

不完全相同;我更改了路徑名並修復了它。 'sys.path.append(「/ mymodules」)'工作。感謝您的幫助 – BenL

+0

很高興現在能夠運作。一般來說,我仍然推薦在'append'後面加上'sys.path.insert(0,'/ some_module')',因爲Python會按順序掃描sys.path列表中的軟件包,並且如果它在早期路徑中找到軟件包在那裏列出,它不會打擾你使用你追加的路徑 – Sebastian

回答

0

在啓動筆記本並在筆記本中首次導入模塊後,您是否修改過模塊?在這種情況下,您可以嘗試重新加載它,例如。 importlib.reload(module)。如果這沒有幫助,請嘗試重新啓動筆記本電腦並重新導入模塊以檢查是否可以解決問題。

+0

我已經重新啓動了內核,它什麼都不做。我已經在一個新的筆記本上嘗試過了。也沒有什麼 – BenL

+0

我實際上關閉了所有的筆記本電腦,並重新啓動Jupyter,似乎已經奏效。如果有人對*爲什麼發生了很好的解釋,我會很感激的;這從來沒有發生在我的電腦上,而且非常令人討厭。我定期編輯該模塊 – BenL

+1

如果您在會話的目錄/路徑中沒有將該模塊作爲'altdata.py',那麼它會從您的PYTHON_PATH中的某個安裝目錄導入它。也許你做了更改並忘記更新安裝?您可以在導入「altdata」後,通過'altdata .__ file__'來檢查它的輸入位置。 – Sebastian

相關問題