0

次のパッケージがある場合:

src
   /__main__.py
   /dir1
        /__init__.py
        /main_code1.py
        /service.py
        /config.py
   /dir2
       /__init__.py
       /maincode2.py
   /dir3
       /__init__.py
       /maincode3.py

ファイルで次のステートメントを使用することの違いは何ですか__main__.py

import dir1

&

from dir1 import *

&

from dir1 import main_code1

2 番目の質問: maincode3.py (dir3 に存在) を dir1 に存在する maincode.py スクリプトにインポートする方法は? sys.path リストを変更せずに方法を探しています。

4

2 に答える 2

2
import dir1

dir1 の をインポートし__init__.pyます。を使用してそこにあるものにアクセスできますdir1.my_var_from_dir1_init。モジュールにアクセスすることはできません。dir1 のものにのみアクセスできます__init__

from dir1 import *

__all__dir1 の で定義された変数で指定されたモジュールをインポートします__init__.py。そのような変数がない場合は、dir1 のすべてのモジュールをインポートします。のように直接アクセスできますmain_code1.myvar

from dir1 import maincode

タイプミスであり、実際にmaincodeモジュールまたはクラスがあると仮定するとmaincode、dir1 からモジュール/クラスがインポートされます。上記のように直接アクセスできます。

__init__.py各オプションは、暗黙的または明示的にdir1 の をインポートすることに注意してください。モジュールを にインポートすると__init__.py、 を使用import dir1すると を使用できるようになりますdir1.module


dir3 を にインポートmaincode3するにmaincode.pyは、単にfrom dir3 import maincode3. インポート エラーが発生する循環インポートには注意してください。相対インポートも参照できます。

于 2013-08-28T22:10:36.210 に答える