添加PythonPath后导入模块却无法访问其函数的问题求助
问题解决:导入Python包后无法直接调用内部函数
核心原因
你将depth_3加入sys.path后,row_1作为顶级包被导入,但当前row_1/__init__.py里的from . import *仅会把同目录下的模块(比如row_1_file)导入到包的命名空间,不会自动把模块内的row_1_print函数提升到包的顶层。因此直接调用row_1.row_1_print或from row_1 import row_1_print都会失败。
解决方案
方案1:修改包的__init__.py(推荐)
把每个row_x包下的__init__.py内容从from . import *改为明确导入目标函数:
# row_1/__init__.py from .row_1_file import row_1_print
同理,row_2/__init__.py改为:
from .row_2_file import row_2_print
修改后,只需执行import row_1,就能直接调用row_1.row_1_print()。
方案2:调整导入语句(无需修改代码)
如果不想改动__init__.py,可以直接导入模块内的函数:
# 方式1:导入模块后调用函数 import row_1.row_1_file row_1.row_1_file.row_1_print() # 方式2:直接导入函数 from row_1.row_1_file import row_1_print row_1_print()
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

