Misakichi’s ログblog

好きなものを紹介したり備忘録のため

keras optimizer.py中でImportError: attempted relative import with no known parent(kerasとpythonのバージョン互換について)

anaconda(python3.7)でkerasを導入するのに手間取った。
tensorflowをはじめ、この辺のパッケージは互換するバージョンが非常に限られているので、導入する際にはネットに落ちてる成功例で試すのが最善策と改めて実感した。


いきさつを説明すると、anacondaを導入しspyderエディタ中でプログラムを実行した際に問題は発生した。
import kerasで実行するも、keras optimizer.py中でImportError: attempted relative import with no known parentなどのエラーを吐く。

①kerasパッケージが古いのかと思いアップデート

→効果なし
ただしアナコンダでない、別パスの真正pythonでは通る。このときのバージョンを

print(sys.version)
print(keras.__version__)

で確かめると
python=3.6.9
keras=2.3.1
の模様。

②anaconda仮想環境(python=3.6.9)を作る

コマンドプロンプト

>user:~$ conda create -n py36 python=3.6 anaconda
次のコマンドで仮想環境に入る
user:~$ source activate py36
(py36)user:~$ pip install keras==2.3.1

をしたら仮想環境中で動くようになった。
なおkerasのバージョンが違ったら動かなかった。また本来conda install keras==2.3.1とやるべきだが、対応するパッケージがなかった。


最終的に解決できてよかった。