Python导入lib.sort模块报错,请求排查基础使用错误
拆解你的Python导入错误问题
嘿,这两个错误都是Python包导入的典型新手坑,我给你一步步理清楚根源和解决办法:
第一个错误:ModuleNotFoundError: No module named 'lib.sort'
这个问题本质是Python找不到你要导入的lib.sort模块,核心原因通常是两个:
- 项目结构不达标:要么你的
lib目录下根本没有sort.py文件,要么lib没被Python认定为可导入的包。Python要求一个目录要成为“包”,必须包含__init__.py文件(哪怕是空文件就行,Python 3.3+支持无这个文件的命名空间包,但新手老老实实加上更不容易出问题)。 - 搜索路径没覆盖到你的包:
lib所在的父目录不在Python的搜索路径sys.path里。举个例子:如果你的脚本在lib目录里面,直接运行的话,Python找不到上层的lib包;正确的做法是在包含lib的那个根目录下运行脚本。
第二个错误:AttributeError: module 'lib' has no attribute 'sort'
当你import lib时,Python只会加载lib包本身(也就是执行lib/__init__.py里的内容),不会自动导入它的子模块sort。哪怕lib目录下确实有sort.py,直接import lib后也没法用lib.sort,解决办法二选一:
- 在
lib/__init__.py里加一行代码:from . import sort,这样你import lib的时候,Python会自动把sort子模块加载进来,之后就能直接调用lib.sort了。 - 换导入方式:改用
from lib import sort或者import lib.sort as sort(前提是第一个错误的问题已经解决)。
标准项目结构参考
给你贴一个能正常运行的项目结构,对照着调整你的文件:
你的项目根目录/ ├── main.py # 你写的包含导入语句的脚本文件 └── lib/ ├── __init__.py # 空文件或者写上from . import sort └── sort.py # 存放你的排序相关代码
新手容易踩的小细节
- 检查文件名拼写:比如有没有把
sort.py写成sorts.py,或者大小写搞错(Linux/macOS系统区分文件名大小写,Windows不区分,这点要留意)。 - 别和标准库重名:如果你的包名和Python自带的库名重复(比如要是你把包名叫
math就完蛋了),会导致导入混乱,尽量起独特的名字。
内容的提问来源于stack exchange,提问作者user1551817
相关产品推荐
相关产品推荐

