调用子文件夹内依赖同目录模块时出现ModuleNotFoundError求助
解决ModuleNotFoundError: No module named 'initiation'问题
你的问题出在weekly_rank.py里的导入路径错误。当从main.py运行程序时,Python的搜索路径(sys.path)是MainProject目录,直接写import initiation会让Python在MainProject下找这个模块,而它实际在Functions文件夹里,所以找不到。
以下两种方法可以解决:
方法1:使用相对导入
在weekly_rank.py里改成相对导入,指向同目录下的模块:
# 导入整个initiation模块 from . import initiation # 或者导入特定变量(如果只需要部分内容) from .initiation import 你的变量名
这种方式是告诉Python从当前包(Functions)里找initiation模块,符合包内模块的导入规范。
方法2:使用绝对导入
直接指定完整的包路径,在weekly_rank.py里写:
from Functions import initiation
这样Python会从sys.path的根目录(也就是MainProject)开始找Functions包下的initiation模块,无论从哪里运行都能生效。
另外,你在main.py里添加from Functions import initiation没用的原因是:这只是让main模块能访问initiation,但weekly_rank模块的导入逻辑是独立的,它的导入语句依然需要自己写正确的路径。
内容的提问来源于stack exchange,提问作者Michael Yoo
相关产品推荐
相关产品推荐

