Python导入子模块报错ModuleNotFoundError的解决方法求助
Python导入子模块报错ModuleNotFoundError的解决方法求助
大家好,我最近写Python代码时碰到了个模块导入的问题,卡了好半天都没搞定,想请各位大佬帮忙看看!
我在main.py里写了这么一行导入代码:
from t1.test import test
结果运行直接弹出错误:
ModuleNotFoundError: No module named 't1'
我已经试过在t1文件夹里创建__init__.py文件了,甚至还在t1的__init__.py里主动导入了test模块,但还是报同样的错,完全摸不着头脑了😩
下面是几个可能能解决问题的方法,你可以挨个试试:
先核对文件夹结构:首先得确保文件摆放位置正确!正确的结构应该是这样的:
你的项目文件夹/ ├── main.py # 你要运行的主文件 └── t1/ # 子包文件夹 ├── __init__.py # 必须存在,空的也行 └── test.py # 你要导入的模块要是
main.py和t1不在同一个文件夹下,Python肯定找不到t1,得先把位置调整对。手动添加项目路径到Python搜索列表:有时候Python的默认搜索路径里没有你的项目根目录,你可以在
main.py最开头加这段代码,把当前脚本所在目录加入搜索路径:import sys import os # 把main.py所在的目录添加到Python的模块搜索路径中 sys.path.append(os.path.dirname(os.path.abspath(__file__)))加完之后再尝试导入,应该就能找到
t1模块了。尝试相对导入(注意运行方式):如果
main.py和t1是同级的,你也可以用相对导入的写法:from .t1.test import test但要注意!用相对导入的话,不能直接双击运行
main.py或者用python main.py命令启动,得把整个项目当成包来运行,比如在项目根目录下执行:python -m main这样Python就能识别到相对导入的父包了。
检查
__init__.py的内容:如果你之前在__init__.py里写了一些导入代码,有可能反而起反作用,你可以先把__init__.py改成空文件,只要文件存在就行——Python只要看到这个文件,就会把t1识别成可导入的包。
备注:内容来源于stack exchange,提问作者Abdul Mannan Ghauri
相关产品推荐
相关产品推荐

