运行DeepFace面部分析代码时遇ImportError错误的原因与解决方法
DeepFace面部分析代码运行报错问题及修复
问题说明
运行以下用于面部分析的DeepFace代码:
from deepface import DeepFace # 替换为你的图片路径 img_path = "happy_face_woman.png" # 分析图片中的人脸 face_analysis = DeepFace.analyze(img_path=img_path) # 打印分析结果 print(face_analysis)
执行时触发如下导入错误:
Traceback (most recent call last): File "c:\Users\Nicholas Starbuck\Desktop\Computer assistant\bot\Gender detection\emotions\main.py", line 1, in <module> from deepface import DeepFace File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\deepface\DeepFace.py", line 14, in <module> import tensorflow as tf File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\__init__.py", line 38, in <module> from tensorflow.python.tools import module_util as _module_util File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\__init__.py", line 37, in <module> from tensorflow.python.eager import context File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\eager\context.py", line 36, in <module> from tensorflow.python.eager import execute File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\eager\execute.py", line 23, in <module> from tensorflow.python.framework import tensor_shape File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\framework\tensor_shape.py", line 26, in <module> from tensorflow.python.saved_model import nested_structure_coder File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\saved_model\nested_structure_coder.py", line 38, in <module> from tensorflow.python.util import nest File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\util\nest.py", line 86, in <module> import wrapt as _wrapt File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\wrapt\__init__.py", line 10, in <module> from .decorators import (adapter_factory, AdapterFactory, decorator, File "C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\site-packages\wrapt\decorators.py", line 34, in <module> from inspect import ismethod, isclass, formatargspec ImportError: cannot import name 'formatargspec' from 'inspect' (C:\Users\Nicholas Starbuck\AppData\Local\Programs\Python\Python311\Lib\inspect.py)
问题根源
- Python 3.11 移除了
inspect.formatargspec方法,但当前安装的wrapt库(TensorFlow的依赖库)版本过旧,仍在调用这个已被移除的方法,导致导入失败。 - 本质是TensorFlow版本与Python 3.11不兼容,间接引入了不匹配的旧版依赖。
修复方法
方法1:升级wrapt到兼容版本
直接更新wrapt到支持Python 3.11的版本,执行命令:
pip install --upgrade wrapt
方法2:调整Python或TensorFlow版本
- 若升级wrapt无效,可将Python降级到3.10版本(TensorFlow对Python 3.10的兼容性更完善)。
- 或者升级TensorFlow到适配Python 3.11的最新稳定版:
pip install --upgrade tensorflow
方法3:重新安装DeepFace及所有依赖
先卸载现有相关包,再重新安装最新版DeepFace,确保所有依赖自动适配当前Python环境:
pip uninstall deepface tensorflow wrapt -y pip install deepface
内容的提问来源于stack exchange,提问作者Nick White
相关产品推荐
相关产品推荐

