Pythonのimportで見事ハマる
(環境: Windows10-anaconda/python3, Debian8.5-anaconda/python3)
TL;DR
循環インポートしてた
タイトル通り. python様に「おめぇのpackage認めねーから!」とお叱りを受ける.
調べると大体以下の解決策がヒットする
- ルートパスが解決できていないので
PYTHONPATH
をプロジェクトルートに設定する sys.path.append("/path/to/dir")
でパスを追加する- 自作package化するためにpackageにしたいディレクトリに空の
__init__.py
というファイルを作成する - 自作packageを呼び出す際はimportで
.py
を含めない
(上2つはパスの解決のため, 3つ目はディレクトリ構造をpackageと認識させるため(python3.3以降は不要らしい), 4つ目は拡張子を除いた文字列がモジュール名と認識されるというルールのため)
が, どれを試しても解決しなかった. エラー内容はno module named ~
や~ is not a package
といったもののみで上記以外見当付かず.
PyCharmを利用していたのでそちらも確認したがエラーのサジェストは一切なし.
動かなくなった前後の変更点を端から試したところ循環インポート, 実際には(エントリポイントのpy -> とあるモジュールA, とあるモジュールA -> エントリポイントのpy)となっていた. この循環インポートをなくしたところ実行できるようになった, めでたし. (エラーサジェスト欲しかった…)