Import 使用PyCharm在Jupyter笔记本中导入自定义模块的问题

Import 使用PyCharm在Jupyter笔记本中导入自定义模块的问题,import,ipython,pycharm,jupyter-notebook,Import,Ipython,Pycharm,Jupyter Notebook,我正在尝试使用PyCharm(2016.1)在Jupyter笔记本中导入自定义模块。然而,我总是得到“ImportError:没有名为xxx的模块”。导入诸如NumPy或Matplotlib之类的包可以正常工作。自定义模块和笔记本在同一个目录中,我尝试将该目录设置为根目录。我怎样才能解决这个问题?非常感谢 如Thomas在评论中所述,确保您的笔记本服务路径和项目路径相同。当您在pycharm中启动笔记本时,您应该得到如下内容: Serving notebooks from local direc

我正在尝试使用PyCharm(2016.1)在Jupyter笔记本中导入自定义模块。然而,我总是得到“ImportError:没有名为xxx的模块”。导入诸如NumPy或Matplotlib之类的包可以正常工作。自定义模块和笔记本在同一个目录中,我尝试将该目录设置为根目录。我怎样才能解决这个问题?非常感谢

如Thomas在评论中所述,确保您的笔记本服务路径和项目路径相同。当您在pycharm中启动笔记本时,您应该得到如下内容:

Serving notebooks from local directory: <path to your project root folder>
从本地目录为笔记本提供服务:

如果在笔记本中运行以下操作

import sys
sys.path
…您看不到包含包/模块的目录的路径,有两种方法。我无法推测为什么在这个例子中会发生这种情况。在OSX上从PyCharm本地运行Jupyter与在托管Linux服务上运行Jupyter时,
sys.path
的结果出现了一些差异

一个简单的解决方法是在笔记本中设置sys路径,以反映包/模块的根位置。例如,如果您的笔记本位于包或模块所在的子目录中,并且
sys.path
仅反映该子目录:

import sys
sys.path.append("../")
关键是
sys.path
必须包含包和模块的根目录,因此附加的路径将取决于具体情况

如果您使用virtualenv作为项目解释器,可能更合适的解决方案是为您的项目创建一个
setup.py
,并使用pip将项目作为一个可编辑的包安装。例如,
pip安装-E.
那么,只要Jupyter从该virtualenv运行,导入就不会有任何问题

我在OSX上遇到的一个难看的问题是Jupyter在启动时引用了错误的virtualenv。通过检查
sys.path
的结果,这一点也很明显。我真的不知道我是如何无意中做到这一点的,但我认为这是因为我第一次让Jupyter在PyCharm中工作的时候做了些手脚。它将使用
~/Library/Jupyter/kernels/.python/kernel.json
中定义的虚拟环境运行,而不是使用本地虚拟环境启动Jupyter。我可以通过清除该目录来清除它,例如
rm-r~/Library/Jupyter/kernels/.python

如果在笔记本中运行
os.getcwd()
,它是否与您的模块在同一目录中运行?