2017-07-07 99 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

相关问题