Python sysmodule、パスをクリーンアップ


Import Searchシーケンス


1.sys.module
2.built-in modules
3.sys.path

sys.modules


ディクショナリ形式
使用済みまたは組み込まれたモジュールまたはパッケージが1つ以上しか存在しないため、新しいimportはありません.

built-in modules


Pythonが公式に提供しているライブラリ.

sys.path


pipで再インストールしたパッケージもここで見つけることができ、新しく作成したパッケージやモジュールを使用する場合はpathを登録して検索に設定します.この変数はlistの形式で構成されます.
上記3つの領域でモジュールまたはパケットが見つからない場合は、ModuleNotFounderErrorを出力します.
'sys':
sysモジュールはすでに内蔵されているので、内蔵モジュールがある部分に見つかります.

Absolute Path & Relative Path


宣言パスには「Absolute Path」と「Relative Path」があります.

Absolute Path

  • トップディレクトリを起点とし、module/packageへのパスです.
    どこで使っても同じで、使うときに紛らわないメリットがあります.
  • Relative Path

  • の最高経路ではなく、自分が現在所属している経路を基準に定義します.
  • プロジェクトの例でpathの設定方法を説明します.
    my_app
    ├── main.py
    ├── pkg1
    │   ├── __init__.py
    │   ├── module1.py
    │   └── module2.py
    └──── pkg2
        ├── __init__.py
        ├── module3.py
        ├── module4.py
        ├── module5.py
        └── pkg4
            ├── __init__.py
            └── module6.py
    #Absolute Path 예시
    from pkg1.module1 import func2
    from pkg2.module3 import func3
    from pkg2.pkg4.module6 import func1
    
    #Relative Path 예시 (현재 위치 : pkg2 module5.py)
    from .module3 import func1
    from ..pkg1.module1 import func1
    from .pk4.module6 import func2
    を選択します.は、親ディレクトリです.
    Relative path
    利点:Absolute Pathより簡単
    欠点:プロジェクトが大きいほど混同されやすくなります.ファイルの場所が変更された場合は変更が必要です.

    結論:Absolute Pathの使用を推奨