サブパッケージのインポートに問題があります。私が持っているパッケージ構造は次のとおりです。
project/
__init__.py
defaults.py
helpers/
__init__.py
misc.py
defaults.py
を含むプロジェクト全体のデータを使用する必要がありますがhelpers\misc.py
、defaults.py
では のいくつかの関数を使用する必要がありますhelpers\misc.py
。循環参照を解決するために、プロジェクトのルートからすべてを参照しようとしてdefaults.py
います。
import project
project.helpers.somefunction()
ただし、これは機能しません。次のように、関数を直接インポートすると機能します。
from project.helpers import somefunction
somefunction()
しかし、循環参照の問題があります。プロジェクトのサブパッケージ内のどこでも同じ問題がありますが、他の場所ではサブパッケージを直接インポートして問題を回避できます。
では、サブパッケージからインポートすると機能するのに、ルート パッケージから同じサブパッケージを参照すると機能しないのはなぜですか?
helpers.py
PS:同じレベルhelpers\
またはその内部のようなファイルはありません。
PPS: プロジェクト パッケージ全体がsys.path
経由で追加されますsys.path.insert(0, '<project_abs_path>')
PPPS: Python 2.7.3、Ubuntu 12.04