4
2

More than 1 year has passed since last update.

pyenvでimport torchしたら、_ctypesで怒られた(→解決)

Posted at

pyenvで予期せぬエラーが起こり、自分なりに解決できたので残しておきます。

なぜ起こったのか

pyenvで環境構築をしてたのですが、env作って、ライブラリ入れるまでは完璧だったのですが、
PyTorchをimportする時に以下のエラーが吐き出されました。

bash
>>> import torch
  File "<stdin>", line 1, in <module>
  File "/home/OOOO/.pyenv/versions/3.8.9/lib/python3.8/site-packages/torch/__init__.py", line 16, in <module>
    import ctypes
  File "/home/OOOO/.pyenv/versions/3.8.9/lib/python3.8/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

PyTorchうんぬんではなく、_ctypesっていうライブラリが上手く入ってないようでした。
(難しい...)

ネットを漁ると、当該envを消し、libffi-devをインストールした後、再度envを入れ直すと直るらしいのですが、私の環境では上手くいかず...

結果的にpyenvのバージョンを下げたら上手くいきました。

使用環境

OS: Pop!_OS 21.10(Ubuntu)
CUDA: 11.6
Python: 3.8.9
(3.8.10, 3.9.10, 3.10.2でも同じ現象が発生しました。)

やったこと(今回、上手くいかなかった手順)

とりあえずこれをやってみると良いと思います。

bash
pyenv uninstall 3.8.9
sudo apt install libffi-dev
pyenv install 3.8.9

私はこれでもダメで、泣きそうになりながらpyenvのバージョンを変えてたらうまくいきました。

やったこと(上手くいった手順)

bash
rm -r ~/.pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd ~/.pyenv
git checkout v2.1.0
pyenv install 3.8.9

# (↓virtualenv使う人用)
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

v2.1.0より上はダメでした。(2022/02/04調べ)

あとはpyenv install ...とかして、import _ctypesが通ればOKです。

まとめ

解決はしましたが、なぜだったのかわからずでした、、、
書いた時点(2022/02/04)ではv2.1.0より上はダメでしたが、もし更新情報などなどがありましたら教えて下さい。

参考

とても参考になりました。ありがとうございました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2