已添加路径至sys.path仍遇ModuleNotFoundError问题求助
解决Python模块导入错误:ModuleNotFoundError: No module named 'folder2'
错误原因
你当前将folder2目录本身添加到了sys.path,但import folder2.test1的写法要求Python能在sys.path中找到包含folder2的父目录(即modules/)。现在Python会在folder2目录下查找folder2子文件夹,自然找不到,因此抛出错误。
解决方案
方案1:修改sys.path指向modules目录,保留原导入语句
调整module_dir的指向,让sys.path包含modules/(folder1和folder2的共同父目录),这样Python就能识别folder2作为合法包:
# main.py import sys, pathlib # 指向folder1和folder2的共同父目录modules/ module_dir = pathlib.Path(__file__).parents[1].resolve() sys.path.insert(1, str(module_dir)) import folder2.test1 as test test.hello()
方案2:直接导入test1模块(适配当前sys.path设置)
既然已经把folder2目录加入sys.path,Python可以直接在该目录下找到test1.py,因此直接导入test1即可:
# main.py import sys, pathlib module_dir = pathlib.Path(__file__).parents[1].joinpath("folder2").resolve() sys.path.insert(1, str(module_dir)) import test1 as test test.hello()
补充:使用相对导入(需以包方式运行)
如果不想修改sys.path,可以把modules作为包,用相对导入,但需要从modules目录外运行脚本(比如执行python -m modules.folder1.main),修改main.py的导入语句:
# main.py from ..folder2 import test1 as test test.hello()
内容的提问来源于stack exchange,提问作者Michael Angelo Hernandez
相关产品推荐
相关产品推荐

