大規模なプロジェクトに取り組んでいると、 モジュール 別のディレクトリから。ただし、何らかの理由でモジュールが正しくインポートされない可能性があります。モジュールが正しくインポートされなくても心配する必要はありません。この記事では、別のディレクトリからモジュールをインポートする方法について説明します。
注記: モジュールは、次で終わる単なる Python プログラムです。 .py 拡張子とモジュールを含むフォルダーがパッケージになります。
ディレクトリ構造:
- Folder_1 - main.py - Folder_2 - module1.py>
Python でファイルをインポートする方法をインポートするには、2 つの異なるフォルダーがあり、1 つは Folder_2 から module1 をインポートするメインの Python ファイルである main.py を含んでいるとします。
モジュール1: add と odd_even という 2 つの関数が含まれています。関数 add は 2 つの引数を受け取り、それらの加算を返します。 odd_even 関数は 1 つだけを受け取ります 口論 数値が偶数の場合は Even を出力し、数値が奇数の場合は Odd を出力します。
入力信号がありません
module1.py
Python3
# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)> |
>
>
単純にインポートしようとすると モジュール1 から フォルダー_2、 次のエラーが発生します。
main.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
出力:

エラー
モジュールが見つかりませんエラー デフォルトでは、Python インタープリターは現在のディレクトリ内のファイルのみをチェックし、別のディレクトリからモジュールをインポートするにはファイル パスを手動で設定する必要があるためです。これはさまざまな方法で行うことができます。これらの方法については、以下で詳しく説明します。
方法 1: sys モジュールを使用して別のディレクトリからモジュールをインポートする
使用できます システムパス 新しい別のフォルダー (モジュールのインポート元のフォルダー) のパスをシステム パスに追加して、Python が現在のディレクトリでモジュールが見つからない場合でも、そのディレクトリでモジュールを検索できるようにします。として システムパス に該当します リスト型クラス そのため、insert メソッドを使用してフォルダー パスを簡単に追加できます。
Python3
# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
出力 :

システムの使用
方法 2: PYTHONPATH を使用する 環境変数
同様に、を使用したくない場合は、 システム 新しいディレクトリのパスを設定するモジュール。ディレクトリ パスを PYTHONPATH 変数に割り当てても、プログラムを動作させることができます。
で Linux 、ターミナルで次のコマンドを使用してパスを設定できます。
import PYTHONPATH='パス/ディレクトリへのパス'
Windows システムの場合:
SET PYTHONPATH=パス/への/ディレクトリ
PYTHONPATH 変数が新しいフォルダーのパスを保持しているかどうかを確認するには、次のコマンドを使用できます。
エコー $パイソンパス
Javaで配列を初期化する方法
Python3
# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Javaの文字列結合
出力:

PythonPATH の使用
次のようなディレクトリ構造があるとします。
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
ここで、インポートしたいのは、 新しい.py からのモジュール フォルダー_2 プロジェクトの Folder_1 に main.py ファイル。
構文:
プロジェクト.フォルダー.サブフォルダー.ファイル名からインポート関数名
Python3
# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()> |
>
>
出力:

出力