Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Jupyter笔记本作为模块导入:路径问题_Python_Module_Path_Ipython_Jupyter - Fatal编程技术网

Python 将Jupyter笔记本作为模块导入:路径问题

Python 将Jupyter笔记本作为模块导入:路径问题,python,module,path,ipython,jupyter,Python,Module,Path,Ipython,Jupyter,我正在尝试将我的一些Jupyter笔记本作为模块加载。Jupyter对如何做有很好的指导。我已经复制了notebook_import.py()中所有必要的函数和类,并从中加载了所有内容。然后我可以导入笔记本电脑,它可以工作: # import functions and classes to make notebooks importable from notebook_import import * 以下笔记本包含测试函数foo(),可打印“bar” 但是,由于某些原因,只有当我尝试导入的笔

我正在尝试将我的一些Jupyter笔记本作为模块加载。Jupyter对如何做有很好的指导。我已经复制了
notebook_import.py
()中所有必要的函数和类,并从中加载了所有内容。然后我可以导入笔记本电脑,它可以工作:

# import functions and classes to make notebooks importable
from notebook_import import *
以下笔记本包含测试函数
foo()
,可打印
“bar”

但是,由于某些原因,只有当我尝试导入的笔记本与我要导入的笔记本位于同一文件夹中时,这种方法才有效。如果我将笔记本放在我通常的模块文件夹中(即,我将
*.py
文件放在其中,其中包含函数以在以后将其作为模块加载),它会显示
没有名为notebook\u import\u test的模块。我对路径管理和Python如何寻找模块还不够了解,我不知道如何在笔记本电脑上实现这一点,比如导入
*.py
,以便从另一个专用于模块的文件夹加载笔记本电脑

有什么建议吗


另外,我的操作系统是Win10。

[我添加这个作为一个答案,因为作为一个评论,格式不足以解释我的评论。我猜这可能不是一个好答案]。

我想你是在其他笔记本上这么做的。如果您在文件夹(您在win10上)上启动jupyter,例如,在文件夹内:

C:\my_notebooks
并且您要导入的笔记本位于不在C:\my\u notebooks文件夹中的另一个文件夹中,例如,C:\dir\u和\u nb\u to\u导入:

然后jupyter不允许您查找文件,因为您只能访问启动jupyter服务器的位置中包含的文件

我不知道在这种情况下,将C:\dir\u与\u nb\u to\u导入到您的
sys.path
是否会有所帮助:

import sys
sys.path.append(r'C:\dir_with_the_nb_to_import')
[编辑]:查看链接文件后,似乎以下列方式更改:

之前:

for d in path:
之后:

for d in sys.path:

这样,它将在
sys.path中查找笔记本,因此您应该将笔记本所在的位置添加到
sys.path

包含两行代码的简单解决方案中

使用python中的“nbimporter”包在笔记本B中导入另一个笔记本A(或其功能)。您可以使用命令-pip install nbimporter安装“nbimporter”

假设有两个笔记本A.ipynb和B.ipynb。我们正在尝试将笔记本A(或其功能)导入B代码中,下面的示例应该可以解决这个问题

内置笔记本B.ipynb

import nbimporter
import A  # or do this --> from A import func1

谢谢你的回答,这是有用的检查,但不幸的是,情况并非如此。我在一个文件夹中启动我的Jupyter,该文件夹高于我在这里使用的所有内容,我正在尝试导入的笔记本和我正在导入的笔记本所在的文件夹都位于sys.path中。您可以将您的notebook\u import.py文件粘贴到某个位置,以检查那里是否有问题吗?当然可以!我正在添加问题描述的链接。但它只是Jupyter网站功能的副本。我怀疑find_notebook()是我需要调整以使其工作的函数,但我还没有弄清楚如何准确地解决问题……嗨,今天我找到了时间来研究您的问题。我已经更新了答案,所以让我知道它是否解决了你的问题。它像一个魅力!非常感谢!我想我不会找到这个。我试图理解它是如何设置要查看的路径的,但我无法理解什么叫NotebookFinder.find_module(),这是设置路径的地方。。。无论如何,非常感谢!
for d in sys.path:
import nbimporter
import A  # or do this --> from A import func1