1

非常に大きな python プロジェクト (200 以上のファイル) があります。

そして今まで私は依存関係を非常にうまく処理してきました.プロジェクトのいくつかの新しい部分が使用され、別のモジュールからの既存の部分が使用されるいくつかの場所があり、すべてが正しい順序でインポートされることを確認するのに十分単純です.

しかし、サブパッケージ内のモジュールが別のサブパッケージからのモジュールを必要とするときに問題が発生しています

説明するために、この単純化されたバージョンを取り上げます

ファイルシステム

Core
|__init__.py
|Database
-|__init__.py
-|Dialogs
--|__init__.py
--|SomeDialog.py
-|Controls
--|__init__.py
--|SomeControl.py
|Frame.py

今、このステートメントを介して SomeControl.pyインポートすると、ファイル内のクラスは どこですかSomeDialog.pyfrom Core.Dialogs.SomeDialog import SomeDialogSomeDialogSomedialog

メインアプリケーションに移動するimport Coreと、「コア」にモジュール「データベース」がないというエラーが表示されます

どうすればこれを修正できますか?

4

1 に答える 1

0

このケースは「循環輸入」と名付けられています。モジュールは、必要に応じて関数やメソッドにインポートできます。

# SomeDialog.py
class Dialog(object):
    def draw(self):
        from ..Controls.SomeControl import control
        control()

# SomeControl.py
def control():
    from ..Dialogs.SomeDialog import all_dialogs
    do_something(all_dialogs)
于 2013-05-20T02:12:44.437 に答える