在Python Shell中导入自定义*.py文件报ModuleNotFoundError如何解决
错误核心原因
你写的导入语句多了不必要的.py后缀。Python的import语法默认是按模块名查找,不需要加文件后缀,当你写from test.py import *时,解释器会将其识别为「从名为test的包中导入py模块下的所有内容」,而你只有单个test.py文件,不存在test这个包,自然会抛出'test' is not a package的报错。
修复方法
- 首先确认你启动Python交互Shell的工作目录就是
test.py所在的$HOME目录,如果你是在其他目录启动的shell,可先执行以下代码把$HOME加入模块搜索路径:
import sys sys.path.append("$HOME")
- 执行正确的导入语句,去掉
.py后缀即可:
from test import *
导入完成后即可正常调用addtwo函数,示例:
print(addtwo(2, 3)) # 输出 5
补充注意事项
- 不要给自定义Python文件与Python内置模块/常用第三方库重名,比如命名为
math.py、json.py、requests.py,否则解释器会优先导入你写的同名文件,导致内置/第三方库无法正常调用。 - 带后缀导入的特殊用法仅适用于自定义导入逻辑的场景,普通开发完全不需要使用。
内容的提问来源于stack exchange,提问作者Ben Lilley
相关产品推荐
相关产品推荐

