[Python] 用意するまで待っていろ
2008年12月10日
パッケージ周りを適当に理解してたのでハマった点。
以下のような構成で python ./test.py をすると、
“cannot import name deadlocked_a” というエラーになる。
.(カレントディレクトリ) |-- test.py |-- testmodules | |-- __init__.py | |-- deadlocked_a.py | `-- deadlocked_b.py
test.py
from testmodules import deadlocked_a
deadlocked_a.py
from testmodules import deadlocked_b
deadlocked_b.py
from testmodules import deadlocked_a # -> そんなモジュールねーよエラー
deadlocked_a の初期化中に import deadlocked_a をされると
無限に初期化が終わらなくなるので
そうならないように、初期化中のモジュールは読み込めないようになってるんですね。
今まで、超適当にimportしてた。
30分位ピヨった。
【追記】
上記のように from パッケージ import モジュール
の呼び出し方だと書いたようになるんですが、
例えば、import パッケージ.モジュール とか
from パッケージ.モジュール import * とかだと、挙動が全然違いますねー。
って、同僚に指摘されました。
この辺大事だから、まとめて動きを知りたいなと。
上記のように from パッケージ import モジュール
の呼び出し方だと書いたようになるんですが、
例えば、import パッケージ.モジュール とか
from パッケージ.モジュール import * とかだと、挙動が全然違いますねー。
って、同僚に指摘されました。
この辺大事だから、まとめて動きを知りたいなと。