导入本地python文件到Jupyter Notebook



我需要在我的Jupyter Notebook中导入一些存储在本地内存中的python文件作为模块。

我的jupyter笔记本存储在C:snipPicturesdemo中,我需要导入存储在C:snipPicturesdemomrcnn中的python文件。

当我尝试这个:

from mrcnn import utils
from mrcnn import visualize
from mrcnn.visualize import display_images
from mrcnn.visualize import display_instances
import mrcnn.model as modellib
from mrcnn.model import log
from mrcnn.config import Config
from mrcnn import model as modellib, utils

我得到这个错误:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-10-fdc1339465a7> in <module>
17 import matplotlib.image as mpimg
18 
---> 19 from mrcnn import utils
20 from mrcnn import visualize
21 from mrcnn.visualize import display_images
ModuleNotFoundError: No module named 'mrcnn'

mrcnn是文件夹名,utils, visualize…是文件夹中的python文件。怎么解呢?

您正在做的工作使用.py文件,但Jupyter文件有点不同。您需要通过添加%run来导入模块如果您还希望使用py文件中的变量,请使用%run -i.

这样做。像这样打印sys.path。这列出了python解释器在执行import时查找的目录。

import sys
print(sys.path)
Output (Something like this):
['/mnt/c/Users/lapto/Desktop/demos', '/home/elaaf/anaconda3/lib/python38.zip', '/home/elaaf/anaconda3/lib/python3.8', '/home/elaaf/anaconda3/lib/python3.8/lib-dynload', '/home/elaaf/anaconda3/lib/python3.8/site-packages', '/home/elaaf/anaconda3/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg']

如果当前工作目录在输出列表中。您的import呼叫不是简单地不在当前目录中查找。

尝试将当前目录添加到sys.path并导入模块

import sys
sys.path.append(".")

如果有帮助,请告诉我。

我正在使用VS Code中的Jupyter笔记本,我面临着类似的挑战。我采用了这种方法:

文件夹结构我想用下面所示的简化文件夹结构来解释我的解决方案。我想在我的笔记本中重用mymodule.py中的代码mynotebook1.ipynb

root
|
|----mynotebook1.ipynb
|
|
|----mynotebook2.ipynb
|
|----modules
|    |
|    |-----__init__.py
|    |
|    |-----mymodule.py
|
|

mymodule.py的内容

class MyAlgorithms
@staticmethod
def some_implementation_1():
print("Inside implmentation 1" )
@staticmethod
def some_implementation_2():
print("Inside implmentation 2" )

init内容py

from modules.mymodule import MyAlgorithms

__all__=[MyAlgorithms]

在笔记本

中引用mymodule.py的代码
import modules
modules.MyAlgorithms.some_implementation_1()

该方法的优点

  • 它让我将更复杂的代码保存在Jupyter笔记本之外的组织良好的类中
  • 我得到了更好的GIT控制和变更跟踪,如果所有的代码都在笔记本中,我将拥有更好的GIT控制和变更跟踪

缺点
  • 当我对模块文件夹中的代码进行一些更改时,我必须重新启动Jupyter笔记本。

这可能已经过时了。我看到这篇文章是因为我有同样的问题。当我看到Vedant Modi的评论说"做了一个新的笔记本,它工作了,不知道为什么",我想到它可能会工作,尝试重新启动内核。是的,重新启动内核解决这个问题。

相关内容

  • 没有找到相关文章

最新更新