[Python]absolute path & relative path
1901 ワード
自分が開発したlocal packageをインポートする場合は、packageの場所に基づいてインポートパスを正しく宣言します.
Local packageをインポートするパスには、絶対パスと相対パスがあります.
インポートしたファイルまたはパスにかかわらず、パスは常に同じです.
上記の項目がある場合は、次のようにインポートできます.
my appプロジェクトでは、どのファイルからインポートしてもパスが常に同じためabsolute pathと呼ばれます.
通常、local packageをインポートする場合はabsolute pathを使用します.
absolute pathを使用する欠点は、パスが長くなることです.
absolute pathとは異なり、プロジェクトのトップディレクトリではなくimportの場所を定義します.
通常、localパッケージ内に他のlocalパッケージをインポートする場合に使用します.
たとえば、package 2のmodule 3からpackage 2のclass 1とpackage 2のサブパッケージsubpackage 1のmodule 5のfunction 2関数をインポートしようとすると、次の操作ができます.
現在の位置はpackage 2/module 3です.したがって、必要なモジュールのパスを現在の位置から宣言するだけでよい.
▲2つも使えます.
2点...は、現在の場所から親ディレクトリへのパスです.
欠点は、ファイルの場所が変更された場合、パスの場所も変更する必要があることです.
したがって,一般的には絶対pathを用いることを推奨する.
Local packageをインポートするパスには、絶対パスと相対パスがあります.
absolute path
インポートしたファイルまたはパスにかかわらず、パスは常に同じです.
上記の項目がある場合は、次のようにインポートできます.
from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2
すべてのパスはmy appプロジェクトの最上位ディレクトリから始まります.my appプロジェクトでは、どのファイルからインポートしてもパスが常に同じためabsolute pathと呼ばれます.
通常、local packageをインポートする場合はabsolute pathを使用します.
absolute pathを使用する欠点は、パスが長くなることです.
relative path
absolute pathとは異なり、プロジェクトのトップディレクトリではなくimportの場所を定義します.
通常、localパッケージ内に他のlocalパッケージをインポートする場合に使用します.
たとえば、package 2のmodule 3からpackage 2のclass 1とpackage 2のサブパッケージsubpackage 1のmodule 5のfunction 2関数をインポートしようとすると、次の操作ができます.
# package2/module3.py
from . import class1
from .subpackage1.module5 import function2
こちらです.importが宣言したファイルの現在の位置を指します.現在の位置はpackage 2/module 3です.したがって、必要なモジュールのパスを現在の位置から宣言するだけでよい.
▲2つも使えます.
2点...は、現在の場所から親ディレクトリへのパスです.
# subpackage1/module5.py
from ..module4 import class4
相対パスの利点は、宣言する必要があるパスの長さを減らすことです.欠点は、ファイルの場所が変更された場合、パスの場所も変更する必要があることです.
したがって,一般的には絶対pathを用いることを推奨する.
Reference
この問題について([Python]absolute path & relative path), 我々は、より多くの情報をここで見つけました https://velog.io/@ulr0xb/Pythonabsolute-path-relative-pathテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol