Gensimインポート時のImportError: 'triu' from 'scipy.linalg' エラーの解決法
問題の概要
PythonでGensimライブラリをインポートしようとすると、以下のエラーが発生します:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
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)
エラーの根本原因
このエラーは、Scipyバージョン1.13以降でtriu
, tril
, tri
関数が非推奨となり、Gensimの特定のバージョンがこれらの関数に依存しているために発生します:
The
scipy.linalg
functionstri
,triu
&tril
are deprecated and will be removed in SciPy 1.13.
解決方法
方法1: Scipyの互換バージョンをインストール(pipユーザー向け)
Scipyのバージョンを1.13未満にダウングレードします。以下のコマンドで問題解決できます:
pip install scipy==1.10.1
代替バージョン
Scipy 1.12.0でも問題なく動作します:
pip install scipy==1.12.0
方法2: Anaconda環境での解決法
conda環境を使用している場合、以下のコマンドで互換バージョンをインストールします:
conda install "scipy<1.13"
重要注意点
Anaconda環境ではpip
とconda
を混在させると環境破損の原因となります:
Once pip is used to install software into a conda environment, conda will be unaware of these changes and may make modifications that would break the environment.
根本解決のための追加対策
依存関係の固定
環境安定化のためにライブラリバージョンをrequirements.txtに固定:
gensim==x.x.x
scipy==1.12.0
仮想環境の活用
プロジェクトごとに独立した環境を作成:
python -m venv my_project_env
source my_project_env/bin/activate # Linux/Mac
.\my_project_env\Scripts\activate # Windows
Gensimのアップグレード検討
長期サポートのため、常に最新版Gensimの使用を確認してください:
pip install --upgrade gensim
まとめ
ImportError: cannot import name 'triu' from 'scipy.linalg'
エラーは、Scipyの後方互換性が失われた変更が原因です。Scipyを1.13未満のバージョン(1.10.1または1.12.0)にダウングレードすることで解決します。環境管理ツール(conda/pip)の適切な使用とバージョン固定を徹底し、将来の非互換問題を予防しましょう。