Qiita初投稿&日本語不自由なので色々拙いが許していただきたい。
けっこう長いことハマった&ググったら同じようにハマってる人がけっこういた&色んな対処法が書いてあったけど解決できてない対処法ばかりだったので、メモしておく。
Keras内部でTheano使う時も同様のエラーが発生する可能性はある気がするので一応タグ付けしておいた。
とりあえず結論(解決できた対処法)
【対処法】
Pythonのプロセス?(自分はJupyterを使っていたのでJupyterのプロセス)をkillして、
再度Jupyterを立ち上げてimport theano実行。普通にエラー消えた。
(参照:https://github.com/Theano/Theano/issues/2406のgrisaitisさんのコメント(on 5 Sep 2015)(わりと下の方))
至極単純だけどJupyter立ちあげっぱで色々試行錯誤してたからこれを行動に移していなかった。
理由は全然わかんないけど再import関係って色々面倒くさい事情があった気がするからその辺りなんだろうと勝手に思っている。
(念のため自分がエラーにぶち当たるまでの過程を書いておくと、
一度目にtheanoをimport(正確にはtheanoをラップしたbmlingamという統計的因果探索モデルのモジュールをimport)した時には当該エラーは出ず、'conda ***'で何かをインストールしろというWarningが出ただけだった。
そしてJupyterを立ち上げたままそのWarningに従ってcondaしたら当該エラーが発生するようになった。)
エラー詳細
発生したのは以下のエラー。
(正確にはTracebackの中身が微妙に違ったかもしれないが、エラーが発生したセルを削除してしまったため、ここからコピペしてきた。)
Problem occurred during compilation with the command line below:
C:\TDM-GCC-64\bin\g++.exe -shared -g -march=haswell -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mmovbe -maes -mno-sha -mpclmul -mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mbmi2 -mno-tbm -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mrdrnd -mf16c -mfsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt -mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1 -mno-clflushopt -mno-xsavec -mno-xsaves -mno-avx512dq -mno-avx512bw -mno-avx512vl -mno-avx512ifma -mno-avx512vbmi -mno-clwb -mno-pcommit --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -m64 -DMS_WIN64 -IC:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Anaconda3\include -IC:\Anaconda3\lib\site-packages\theano\gof -o C:\Users\Lua\AppData\Local\Theano\compiledir_Windows-10-10.0.14393-SP0-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-3.5.2-64\lazylinker_ext\lazylinker_ext.pyd C:\Users\Lua\AppData\Local\Theano\compiledir_Windows-10-10.0.14393-SP0-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-3.5.2-64\lazylinker_ext\mod.cpp -LC:\Anaconda3\libs -LC:\Anaconda3 -lpython35
Traceback (most recent call last):
File "", line 1, in
import theano
File "C:\Anaconda3\lib\site-packages\theano__init__.py", line 63, in
from theano.compile import (
File "C:\Anaconda3\lib\site-packages\theano\compile__init__.py", line 9, in
from theano.compile.function_module import *
File "C:\Anaconda3\lib\site-packages\theano\compile\function_module.py", line 22, in
import theano.compile.mode
File "C:\Anaconda3\lib\site-packages\theano\compile\mode.py", line 12, in
import theano.gof.vm
File "C:\Anaconda3\lib\site-packages\theano\gof\vm.py", line 647, in
except (OSError, theano.gof.cmodule.MissingGXX) as e:
AttributeError: module 'theano' has no attribute 'gof'
theanoのディレクトリ見てみたらtheano.gofが無いわけでもないみたい。
色々サイト見てたら
「Theanoを再インストールしろ」的なことが書いてあったり、
「numpyのバージョン上げろ」とか「g++関係のエラーだからm2w64-toolchainパッケージなるものを入れなさい」的なことが書いてあったりしたが、
それらに従っても全然解決しなかった。
闇雲にTheano、m2w64-toolchainのインストール/アンインストールを繰り返したり、gitから直でインストールしてみたり、"pip install theano"でなく"pip install Theano"とかしてみたけどまあ解決せず。
結局上で書いた方法で解決した。
エラーの原因もなんで解決したのかも全然わからないのでわかる方教えてください。
このTracebackも解決できるかも
一応、今回使った解決方法が書いてあったページに載っていたTracebackは微妙に違っていたため、もしかしたらこのTracebackに対しても有効なのかもしれないので載せておく。
import theano
Traceback (most recent call last):
File "<ipython-input-19-3397704bd624>", line 1, in <module>
import theano
File "/Users/skywalkerhunter/anaconda/lib/python2.7/site-packages/theano/__init__.py", line 55, in <module>
from theano.compile import
File "/Users/skywalkerhunter/anaconda/lib/python2.7/site-packages/theano/compile/__init__.py", line 6, in <module>
from theano.compile.function_module import *
File "/Users/skywalkerhunter/anaconda/lib/python2.7/site-packages/theano/compile/function_module.py", line 16, in <module>
from theano import gof
ImportError: cannot import name gof