导入Gensim时出现ImportError:无法从scipy.linalg导入triu
问题:导入Gensim时触发ImportError: cannot import name 'triu' from 'scipy.linalg'
执行import gensim时出现如下错误:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.10/dist-packages/gensim/__init__.py", line 11, in <module> from gensim import parsing, corpora, matutils, interfaces, models, similarities, utils # noqa:F401 File "/usr/local/lib/python3.10/dist-packages/gensim/corpora/__init__.py", line 6, in <module> from .indexedcorpus import IndexedCorpus # noqa:F401 must appear before the other classes File "/usr/local/lib/python3.10/dist-packages/gensim/corpora/indexedcorpus.py", line 14, in <module> from gensim import interfaces, utils File "/usr/local/lib/python3.10/dist-packages/gensim/interfaces.py", line 19, in <module> from gensim import utils, matutils File "/usr/local/lib/python3.10/dist-packages/gensim/matutils.py", line 20, in <module> from scipy.linalg import get_blas_funcs, triu ImportError: cannot import name 'triu' from 'scipy.linalg' (/usr/local/lib/python3.10/dist-packages/scipy/linalg/__init__.py)
错误原因
这个错误源于Gensim与SciPy版本不兼容:
- 较新的SciPy版本(如1.10.0及以上)中,
triu函数从scipy.linalg模块迁移到了scipy.linalg._special_matrices内部模块。 - 当前安装的Gensim版本仍在尝试从
scipy.linalg导入triu,因此触发导入失败。
解决方法
方法1:升级Gensim到兼容版本
更新Gensim至支持新SciPy版本的最新版,执行命令:
pip install --upgrade gensim
方法2:降级SciPy到兼容版本
若暂时不想升级Gensim,可将SciPy降级到triu仍在scipy.linalg中的版本(如1.9.x系列),执行命令:
pip install scipy==1.9.3
方法3:使用虚拟环境隔离依赖
操作前激活虚拟环境,避免修改系统全局Python包,防止影响其他项目:
- 激活虚拟环境后,再执行上述升级/降级命令。
内容的提问来源于stack exchange,提问作者CodeRed
相关产品推荐
相关产品推荐

