我需要在我的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的评论说"做了一个新的笔记本,它工作了,不知道为什么",我想到它可能会工作,尝试重新启动内核。是的,重新启动内核解决这个问题。