Python3.11下transformers库pipeline模块导入失败求助
问题解决:ImportError: cannot import name 'formatargspec' from 'inspect'
问题根源
从报错追踪可知,旧版本的wrapt库在Python 3.11环境中尝试调用已被移除的inspect.formatargspec函数(Python 3.11正式移除了该废弃函数)。导入transformers.pipeline时会间接触发TensorFlow的导入流程,而TensorFlow依赖旧版wrapt,最终导致报错。
解决方案
方案1:升级wrapt到兼容版本
直接升级wrapt到支持Python 3.11的版本(>=1.14.1版本已修复该问题):
pip install --upgrade wrapt
若使用conda环境:
conda update wrapt
方案2:升级TensorFlow到兼容Python 3.11的版本
如果升级wrapt后仍有问题,可能是旧版TensorFlow与Python 3.11不兼容,建议升级到TensorFlow 2.13及以上版本:
pip install --upgrade tensorflow
方案3:禁用Transformers对TensorFlow的加载(若不需要TF)
如果你的场景不需要TensorFlow,可以在导入Transformers前设置环境变量禁用TF相关模块:
import os os.environ["TRANSFORMERS_NO_TF"] = "1" from transformers import pipeline
补充说明
你提到Transformers 4.28.0版本无此问题,是因为该版本的Transformers在导入pipeline时,可能没有触发TensorFlow的导入逻辑,或者当时的依赖版本组合恰好兼容Python 3.11。
内容的提问来源于stack exchange,提问作者Luis Enrique Garduno Morales
相关产品推荐
相关产品推荐

