jupyter notebook中调用当前文件夹下文件的方法(持续更新)

导语:在使用jupyter notebook时,碰到.ipynb文件无法调用文件夹下模块,找了一些方法解决了一些问题,故记录下来

假设有如下目录结构

--tools
	-- modules
		-- __init__.py
		-- a.py
		-- b.py
	-- __init__.py
	-- image_process.py
	-- utils.py
main.ipynb
dataloader.py

mian.ipynb中分别想调用各个文件的方法

  1. 首先,最简单的调用dataloader.py中的方法,那么只需在main.ipynb中加入如下一句:
import dataloader
# 或者
from dataloader import *
  1. 然后,调用tools子目录下的image_tools.py文件中的方法
首先需要在tools子目录下新建一个__init__.py文件,并添加如下代码
from tools import image_tools.py
注意:格式为 from 包名 import 模块名  (这样就可以被文件夹外的main.ipynb检索到?)

​ 进一步地,如果image_tools.py文件调用了相同目录下的utils.py,那么在image_tools.py文件中引入

from . import utils
# 或者
from utils import xxx(具体方法)

​ 最后,如果image_tools.py 调用了modules文件夹下的a.py中的文件,那么

首先,在modules文件下,新建__init__.py文件,并在其中添加
from .a import xxx(foo)
from .b import xxx
# 或者
from . import a
from . import b

然后,在image_tools.py文件中写上
from .modules.a import xxx(foo)
from .modules.b import xxx
# 或者
from .modules import * (待验证)

如果目录modules文件夹下的a.pyb.py中的方法想要调用utils.py,我还没想到办法,待验证….
Table of Contents