多目录分模块Python项目导入报错ModuleNotFoundError如何解决?
问题定位步骤
- 第一步:打印模块搜索路径确认根目录是否在搜索列表
在start.py最顶部加入以下代码,运行后查看输出中是否包含你的项目根路径E:\MySoftware:
import sys print(sys.path)
如果没有该路径,说明Python运行时的工作目录配置错误,找不到本地的modules包。
- 第二步:检查文件命名与后缀
确认modules文件夹下的文件确实命名为mymodulesteam.py,无拼写错误、大小写错误,也没有被系统隐藏真实后缀(比如误存为mymodulesteam.py.txt)。 - 第三步:排查命名冲突
检查Python环境中是否存在同名的第三方modules包,或者sys.path中其他路径下存在同名modules文件夹,导致Python优先搜索到了错误的包。 - 第四步:检查IDE运行配置
如果使用VSCode、PyCharm等IDE运行代码,确认运行配置里的「工作目录(cwd)」设置为E:\MySoftware,而非modules子目录。
解决方案
- 手动添加项目根目录到搜索路径
在start.py最顶部加入以下代码,自动将项目根目录加入模块搜索列表:
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)))
- 修正包导入逻辑
如果你在modules文件夹下保留了__init__.py,需要在该文件中显式导出对应模块,加入一行:
from . import mymodulesteam
之后prepare.py中使用绝对导入即可:
from modules import mymodulesteam as mymodules
如果删除__init__.py,确保sys.path包含项目根目录的前提下,上述导入语句也可以正常运行。
3. 统一运行入口
不要单独直接运行prepare.py,全部从start.py入口启动项目;如果需要调试单个模块,在MySoftware目录下打开终端,使用模块运行命令:
python -m start
内容的提问来源于stack exchange,提问作者Gauthier Buttez
相关产品推荐
相关产品推荐

