冒頭
Windows環境でPythonを実行し、import torchを実行したところ、以下のエラーが発生しました。
from torch._C import *, DLL load failed: The specified module could not be found.
このエラーは、PyTorchのインストールが完了しているように見えても、DLL(ダイナミックリンクライブラリ)の読み込みに失敗した場合に発生します。特にWindows環境では、CUDAやNumPyのバージョン競合导致的的に起こりやすい問題です。
結論
NumPyをMKL版(Math Kernel Library)に変更するか、PyTorchとNumPyのバージョンを再インストールすることで解決できます。
具体的な手順
手順1:現在の環境を確認する
まず、現在のPython環境とインストール済みパッケージを確認します。
python --version
pip list | grep -E "(torch|numpy)"
手順2:NumPyをMKL版に再インストールする(Windows環境)
Windows環境では、NumPyの通常版ではなくMKL版をインストールすることで解決する場合があります。
# NumPyをアンインストール
pip uninstall numpy
# NumPy+MKLをインストール(Python 3.6、64bitの場合)
pip install numpy-1.14.5+mkl-cp36-cp36m-win_amd64.whl
# または、最新バージョンのMKL版をインストール
pip install numpy --upgrade
※Pythonのバージョンに合わせて適切な.whlファイルを選択してください。
手順3:PyTorchを再インストールする
NumPyの再インストール後、PyTorchも再インストールします。
# PyTorchをアンインストール
pip uninstall torch
pip uninstall torchvision
# PyTorchを再インストール(CPU版)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
# CUDA版をインストールする場合
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
手順4:動作確認
インストールが完了したら、Pythonでインポートテストを行います。
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
このコマンドがエラーなく実行できれば、PyTorchのインポートに成功しています。
手順5:condaを使用する場合
conda環境を使用している場合は、以下の手順で確認・解決できます。
# 環境の確認
conda list | grep torch
# condaで再インストール
conda uninstall pytorch
conda install pytorch torchvision cpuonly -c pytorch
補足・注意点
バージョン依存について
- NumPyのバージョン:NumPy 1.14.5〜1.16系はPyTorch 1.x系と互換性が高いです
- Pythonのバージョン:Python 3.6〜3.9範囲での組み合わせが安定しています
- CUDAバージョン:GPUを使用する場合、CUDA 10.1〜11.8とPyTorchのバージョンを一致させる必要があります
環境別の注意点
- Windows:MKL版のNumPy必須。Visual C++ 再頒布可能パッケージのインストールが必要な場合あり
- macOS:Metal Performance Shaders (MPS) の対応状況に注意
- Linux:多くの場合、pip installで正常に動作するが、ソースからのビルド時はGCCのバージョンに注意
よくある落とし穴
- 複数環境の混在:condaとpipを混在させると、DLLの競合が発生しやすい
- 仮想環境の不一致:アクティブにしているPython環境と、安装しているPyTorchの環境が異なっている場合がある
- TensorFlowとの競合:TensorFlowとPyTorchを同時にインポートするとクラッシュする場合がある(回避策:順序を入れ替える)
開発時の注意点
開発時はsetup.py installではなく、setup.py developを使用することで、インポート問題を回避できる場合があります。
python setup.py develop
参考元
- Stack Overflow – import torch giving error “from torch._C import *, DLL load failed”
- Stack Overflow – Cannot import torch module
- PyTorch Forums – Import torch not working
- Reddit – Python Cannot Import torch