[ PROMPT_NODE_24706 ]
python
[ SKILL_DOCUMENTATION ]
# Python 错误模式
常见的 Python 错误及其诊断与解决方案。
## 导入错误
### ModuleNotFoundError
python
ModuleNotFoundError: No module named 'package_name'
**原因**:
1. 未安装包
2. 未激活虚拟环境
3. Python 版本错误
4. 模块名称拼写错误
**诊断**:
bash
# 检查包是否已安装
pip show package_name
pip list | grep package
# 检查当前 Python 环境
which python
python --version
# 检查是否在虚拟环境中
echo $VIRTUAL_ENV
**解决方案**:
bash
# 安装包
pip install package_name
# 如果使用虚拟环境
source venv/bin/activate
pip install package_name
# 如果 Python 版本错误
python3 -m pip install package_name
pip3 install package_name
---
### ImportError: cannot import name 'X' from 'Y'
python
ImportError: cannot import name 'MyClass' from 'mymodule'
**原因**:
1. 模块中不存在该名称
2. 循环导入
3. 模块结构已更改
4. 名称拼写错误
**诊断**:
python
# 检查可用内容
import mymodule
print(dir(mymodule))
# 检查是否循环导入
# 在每个模块顶部添加 print 以查看导入顺序
**解决方案**:
python
# 循环导入修复 - 将导入移至函数内部
def my_function():
from other_module import something
return something()
# 或者重构代码以避免循环依赖
---
## 类型错误
### TypeError: 'NoneType' object is not subscriptable
python
TypeError: 'NoneType' object is not subscriptable
**原因**:
1. 函数返回了 None(忘记写 return)
2. dict.get() 返回了 None
3. API 响应为 None
**解决方案**:
python
# 添加 None 检查
if result is not None:
value = result['key']
# 使用默认值
value = result.get('key', 'default') if result else 'default'
# 使用海象运算符 (Python 3.8+)
if (result := get_result()) is not None:
value = result['key']
---
### TypeError: 'X' object is not callable
python
TypeError: 'str' object is not callable
**原因**:
1. 变量遮蔽了内置函数
2. 某处缺少方法括号
3. 将属性作为方法访问
**常见罪魁祸首**:
python
# 遮蔽内置函数 - 请勿这样做
list = [1, 2, 3] # 遮蔽 list()
str = "hello" # 遮蔽 str()
dict = {'a': 1} # 遮蔽 dict()
type = "my_type" # 遮蔽 type()
id = 123 # 遮蔽 id()
**解决方案**:
python
# 重命名变量
my_list = [1, 2, 3]
my_str = "hello"
# 或者删除遮蔽变量
del list