如何直接导入其他文件夹__init__.py中的变量无需前缀调用?
解决直接导入utils中变量的方法
方法一:规范路径配置 + 常规导入(推荐)
你的workflow和utils是同级目录,先把项目根目录(两个文件夹的父目录)加入Python的搜索路径,再直接导入utils里的所有内容:
在file1.ipynb开头添加以下代码:
import sys from pathlib import Path # 获取项目根目录(workflow的上级目录) root_dir = Path.cwd().parent sys.path.append(str(root_dir)) # 直接导入utils中的所有内容 from utils import *
之后你就能直接写function_one()调用,不需要加utils.前缀了。
方法二:批量导入模块成员(不推荐,易冲突)
如果一定要用你原来的importlib加载方式,可以把加载后的utils模块里的所有成员批量导入到当前命名空间:
import importlib utils = importlib.machinery.SourceFileLoader('utils', '/home/utils/__init__.py').load_module() # 将utils模块的所有成员导入当前命名空间 globals().update(utils.__dict__)
这种方法虽能实现需求,但容易覆盖当前已有的变量,造成命名冲突,优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者matt.aurelio
相关产品推荐
相关产品推荐

