LoginSignup
2
3

More than 5 years have passed since last update.

pythonのimportに関する使用に関して

Posted at

開発環境

python 3.6.5
pyenv 1.2.3
keras 2.1.6
h5py 2.7.1
Darwin 16.7.0 Darwin Kernel Version 16.7.0: Tue Jan 30 11:27:06 PST 2018; root:xnu-3789.73.11~1/RELEASE_X86_64 x86_64

起こったこと

フォルダの中身は次のようになっていました。
- keras.py
- base64.py

keras.pyの中身は次のようになっていました。

keras.py
from keras.models import Sequential
from keras.layers import Dense, Activation

これを実行しようとしたところ、以下のようなエラーが出てきました。

Traceback (most recent call last):
  File "keras.py", line 1, in <module>
    from keras.models import Sequential
  File "keras.py", line 1, in <module>
    from keras.models import Sequential
ModuleNotFoundError: No module named 'keras.models'; 'keras' is not a package

原因を調べたところ、keras.pyは自分自身をimportしていました。このkeras.pyをlearn.pyに名前を変更してこの問題は解決しましたが、次にkeras.pyを実行したところ次のエラー最後の行に文字が出てきました。

ImportError: cannot import name 'b64encode'

kerasはh5pyというライブラリを使っています。このh5pyの中でbase64をimportしています。これはlearn.pyと同じフォルダにあるbase64.pyをimportしようとしているために出るエラーだということが発覚しました。なのでこのbase64.pyを消してこの問題は解決しました。

余談

ローカルのフォルダにあるファイルをインポートする方法はきちんとあるので、デフォルトでグローバルな場所を探すようにしてもらえたら嬉しいんですが。これは仕様がバグとしか言いようがないですよね。

2
3
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
2
3