0

サブパッケージのインポートに問題があります。私が持っているパッケージ構造は次のとおりです。

project/
    __init__.py
    defaults.py
    helpers/
       __init__.py
       misc.py

defaults.pyを含むプロジェクト全体のデータを使用する必要がありますがhelpers\misc.pydefaults.pyでは のいくつかの関数を使用する必要がありますhelpers\misc.py。循環参照を解決するために、プロジェクトのルートからすべてを参照しようとしてdefaults.pyいます。

import project

project.helpers.somefunction()

ただし、これは機能しません。次のように、関数を直接インポートすると機能します。

from project.helpers import somefunction

somefunction()

しかし、循環参照の問題があります。プロジェクトのサブパッケージ内のどこでも同じ問題がありますが、他の場所ではサブパッケージを直接インポートして問題を回避できます。

では、サブパッケージからインポートすると機能するのに、ルート パッケージから同じサブパッケージを参照すると機能しないのはなぜですか?

helpers.pyPS:同じレベルhelpers\またはその内部のようなファイルはありません。

PPS: プロジェクト パッケージ全体がsys.path経由で追加されますsys.path.insert(0, '<project_abs_path>')

PPPS: Python 2.7.3、Ubuntu 12.04

4

1 に答える 1

1
import project.helpers

project.helpers.somefunction()
于 2013-10-15T18:30:07.680 に答える