执行python -m命令报ModuleNotFoundError: No module named x的原因与解决
问题原因及解决办法
错误原因
- 运行命令错误:使用
python -m参数时,后面应跟模块名而非带.py后缀的文件名。你输入的python -m test.main.py会被Python解析为寻找名为test.main.py的模块,这显然不存在,同时也会导致模块路径识别异常。 - 导入路径错误:当通过
-m以模块方式运行test.main时,Python的模块搜索路径(sys.path)会包含项目根目录(Project)。此时main.py属于test包,你直接写from x import c, k和import y,Python会在项目根目录下寻找顶级模块x和y,但这两个文件实际在test包内,所以触发ModuleNotFoundError。
解决步骤
步骤1:修正运行命令
将命令改为:
python -m test.main
这样Python会正确识别test是一个包,main是包内的模块。
步骤2:修改main.py的导入语句
有两种可行的修改方式:
方式一:使用相对导入(适用于包内模块间的引用)
修改main.py的代码为:from .x import c, k from . import y这里的
.代表当前模块所在的包(即test),告诉Python在同一个包内寻找x和y模块。方式二:使用绝对导入(基于包名的完整路径)
修改main.py的代码为:from test.x import c, k import test.y这种方式明确指定从
test包下导入x和y模块,Python会从sys.path中的项目根目录找到test包,进而定位到对应的模块。
内容的提问来源于stack exchange,提问作者DonBebo97
相关产品推荐
相关产品推荐

