Python从父文件夹导入类报错:ModuleNotFoundError问题求助
解决Python类导入问题的具体步骤
你遇到的ModuleNotFoundError主要是两个原因:一是文件夹名称带空格(project Main),Python不允许模块名包含空格;二是导入的路径层级没处理对。下面给你两种解决办法:
方法一:重命名文件夹(最推荐,符合规范)
- 把
project Main改成不带空格的名称,比如project_main,这是Python模块命名的基本要求。 - 在
project_main和Folder_one这两个文件夹里,各新建一个空的__init__.py文件——这个文件是告诉Python:“这是一个可以导入的包目录”。 - 在
my_folder_one_file.py里选择合适的导入方式:- 相对导入(适合包内部文件互相调用):
注意:用这种方式时,不能直接在from ..my_file import My_Class_1, My_class_2Folder_one目录下运行python my_folder_one_file.py,得回到D盘根目录,用python -m project_main.Folder_one.my_folder_one_file来执行脚本。 - 绝对导入:
先把D盘根目录加到Python的搜索路径里,再导入类:import sys sys.path.append('D:/') from project_main.my_file import My_Class_1, My_class_2
- 相对导入(适合包内部文件互相调用):
方法二:保留原文件夹名称(不推荐,易出问题)
如果不想改文件夹名,只能通过手动添加路径来绕开空格问题,代码如下:
import sys sys.path.append('D:/project Main') from my_file import My_Class_1, My_class_2
这种方式虽然能临时解决问题,但后续项目结构变动时很容易报错,还是优先用方法一。
另外提醒下:尽量别用import *的方式导入,明确写出要导入的类名,既能提升代码可读性,还能避免潜在的命名冲突。
内容的提问来源于stack exchange,提问作者Hobby_Devloper
相关产品推荐
相关产品推荐

