この記事では、親ディレクトリからモジュールをインポートする方法を学びます。 Python 3.3 以降、親ディレクトリ内のモジュールの参照またはインポートは許可されません。以下の例から、これを明確に理解できます。
親ディレクトリにはサブディレクトリ geeks.py ファイルがあり、そのサブディレクトリには temp.py という名前の Python ファイルがあります。 次に、temp.py ファイルから親ディレクトリに geeks モジュールをインポートできるか試してみましょう。サブディレクトリ。
geeks.py (親ディレクトリ内のモジュール)
Python3
es5 と es6
def> geek_method():> >print>(>'This method in geeks module.......bye'>)> |
>
>
temp.py (サブディレクトリ内の Python ファイル)
Python3
Android で隠れたアプリを見つけるにはどうすればよいですか
# importing the module in> # parent directory> from> parentdirectory>import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
>
>
前に説明したように、親ディレクトリからモジュールをインポートすることはできないため、次のようなエラーが発生します。
トレースバック (最後の呼び出し):
ファイル C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py、行 2、in
親ディレクトリからインポートオタク
ModuleNotFoundError: 「parentdirectory」という名前のモジュールがありません
次に、モジュールをインポートする方法を学びましょう。 親ディレクトリ:
モジュールをインポートするには、そのモジュールを含むディレクトリが PYTHONPATH 上に存在する必要があります。これは、Python によってロードされるパッケージのリストを含む環境変数です。 PYTHONPATH に存在するパッケージのリストは sys.path にも存在するため、親ディレクトリのパスが システムパス。
私たちの作業では、例を使用して以下で説明する 3 つの異なるアプローチを使用します。
方法 1: sys.path メソッドを使用して親ディレクトリからインポートする
ここでは、sys モジュールを使用し、必要なモジュールへのパスを直接設定します。
int を文字列に変換する
親ディレクトリを システムパス を使用して 追加() 方法 。これは、インタープリタが検索する特定のパスを追加するためにパス変数とともに使用できる sys モジュールの組み込み関数です。次の例は、これを行う方法を示しています。
Python3
import> sys> # setting path> sys.path.append(>'../parentdirectory'>)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
出力:
This method in geeks module.......bye>
方法 2: を使用して親ディレクトリからインポートする os.path.abspath() メソッド
ここでは、ディレクトリを取得するために sys モジュールと path モジュールを使用し、必要なモジュールへのパスを直接設定します。
構文: os.path.abspath(パス)
パラメータ:
パス: ファイル システム パスを表すパスのようなオブジェクト。戻り値の型: このメソッドは、パス名 path の正規化されたバージョンを返します。
まず、path.path(__file__) を使用して、temp.py ファイルが現在存在するディレクトリの名前を取得します。 abspath()、次にディレクトリを システムパス .append で確認するので、そのメソッドを使用します。
Python3
C# リスト
import> path> import> sys> # directory reach> directory>=> path.path(__file__).abspath()> # setting path> sys.path.append(directory.parent.parent)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
出力:
This method in geeks module.......bye>
方法 3: を使用して親ディレクトリからインポートする os.パス.ディレクトリ名 方法
ここでは、ディレクトリ (現在のディレクトリと親ディレクトリ) を取得するために sys モジュールと os モジュールを使用し、必要なモジュールへのパスを直接設定します。
構文: os.path.dirname(パス)
パラメータ:
パス : ファイル システム パスを表すパスのようなオブジェクト。戻り値の型: このメソッドは、指定されたパスからディレクトリ名を表す文字列値を返します。
まず、os.path.dirname (os.path.realpath(__file__)) を使用して現在のディレクトリを取得し、次に os.path.dirname() を使用して親ディレクトリを取得し、最後に親を追加します。ディレクトリへの システムパス 確認するには、そのメソッドを使用します。
Python3
import> sys> import> os> # getting the name of the directory> # where the this file is present.> current>=> os.path.dirname(os.path.realpath(__file__))> # Getting the parent directory name> # where the current directory is present.> parent>=> os.path.dirname(current)> # adding the parent directory to> # the sys.path.> sys.path.append(parent)> # now we can import the module in the parent> # directory.> import> geeks> geeks.geek_method()> |
>
Javaタプル
>
出力:
