pythonで、自分の作ったクラスをimportしようとした時にエラーが出ました。
ImportError: cannot import name ‘stock’ from ‘lib’ (unknown location)
ImportError: attempted relative import with no known parent package
pythonでは、上位フォルダのプログラムをimportするとエラーになるようです。
もしこのような親ディレクトリにあるファイルをimportしたい場合、カレントディレクトリの上位ディレクトリをプログラムからモジュール検索パスに追加する必要があるらしいです。このやり方は、なんだか気持ちがいいものではないですが。
基本的には、上位のファイルから下位のフォルダにあるファイルをimportするようです。
それか、パスを追加するか。または、モジュールをインストールして使うようにするか。のどれかになるようです。
カレントディレクトリの上位ディレクトリをプログラムからモジュール検索パスに追加してからimportさせるとエラーは出なくなりました。下記コードは、実行するプログラムが保存されているディレクトリの1つ上のディレクトリをモジュール検索パスに追加するコードです。コピペで問題ないはず。
sys.path.append(os.path.join(os.path.dirname(__file__), ‘..’))
from lib import stock
↑これは、libフォルダの中のstock.pyファイルをインポートするという意味。