モジュールをインポートする Python 例を挙げて

⚡ スマートサマリー

インポート Python モジュールを使用すると、あるファイルで定義された変数、関数、クラスを別のファイルで再利用できます。モジュールは単なる .py ファイルですが、パッケージは __init__.py ファイルでマークされたディレクトリ内に、関連するモジュールをグループ化します。

  • 🔘 モジュールとは何か? モジュールとは、変数、関数、またはクラスを格納する単一の.pyファイルのことです。
  • ☑️ キーワードのインポート: import はモジュール全体をロードします。module_name.function_name はそのメンバーを呼び出します。
  • ✅ 選択的輸入: `from module import name` を使用すると、必要な関数または変数のみが取り込まれます。
  • 🧪 エイリアス: import module as alias は長い名前を短縮します。from module import * はすべてを公開します。
  • 🛠️ パッケージとパス: __init__.py はフォルダをパッケージに変換します。sys.path には検索場所が一覧表示されます。
  • 🤖 AIワークフロー: 機械学習プロジェクトはNumPy、pandas、およびPyをインポートしますTorch をモジュールとして扱います。

モジュールをインポートする Python

以下のセクションでは、モジュール、パッケージ、さまざまなインポートスタイル、絶対インポートと相対インポートの仕組みについて説明します。 Python.

モジュールとは Python?

モジュールは、 Python コード。コードは、変数、関数、または定義済みのクラスの形式で記述できます。ファイル名がモジュール名になります。

たとえば、ファイル名が guru99.py の場合、モジュール名は次のようになります。 guru99。 モジュール機能を使用すると、コードを XNUMX つのファイル内にすべてを記述するのではなく、複数のファイルに分割できます。

何ですか Python モジュールをインポートしますか?

ファイルはモジュールとみなされます Pythonモジュールを使用するには、以下の方法でインポートする必要があります。 import キーワード。ファイル内に存在する関数または変数は、モジュールをインポートすることで別のファイルで使用できます。この機能は、他の言語でも利用可能です。 TypeScript, Javaスクリプト、 Java、ルビーなど

モジュールを作成してインポートする方法 Python?

次に、モジュールを作成し、それを別のファイルにインポートします。

スクリーンショットに示すように、モジュールを作成してインポートするフローは次のとおりです。

モジュールを作成してインポートする Python

モジュールを作成するには、以下の手順に従ってください。 Python.

コードのテストに使用されるフォルダー構造は次のとおりです。

modtest/
	test.py
	display.py	

ステップ1) test.pyという名前のファイルを作成します。

ステップ2) test.py 内で、display_message() という関数を作成します。

Def display_message():
    return "Welcome to Guru99 Tutorials!"

ステップ3) 次に、別のファイル display.py を作成します。

ステップ4) display.py の中に、以下に示すように test.py モジュールをインポートします。

import test

インポート時には、test.py を指定する必要はなく、ファイル名だけを指定すれば十分です。

ステップ5) その後、display.py 内で test.py の display_message() 関数を呼び出すことができます。その際、module_name.function_name を使用する必要があります。

たとえば、test.display_message()。

Import test
print(test.display_message())

ステップ6) display.pyを実行すると、次のようになります。 出力:

Welcome to Guru99 Tutorials!

クラスのインポート Python

先ほど、関数を持つシンプルなモジュールを見てきました。ここでは、クラスを作成し、別のファイル内でそのクラスを参照する方法を見ていきます。

コードをテストするためのフォルダ構造は以下のとおりです。

myproj/
	Car.py
	display.py

次のコードを含む Car.py というファイルを作成します。

ファイル名 : Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

Car.py ファイルには、brand_name、model、manu_year という属性があります。クラス内で定義されている関数は、car_details()、get_Car_brand()、get_Car_model() です。

次に、ファイル Car.py を、display.py という別のファイルのモジュールとして使用してみましょう。

ファイル名 : 表示.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

出力:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

つまり、Carモジュールを使用することで、Car.py内のすべての変数と関数にアクセスできます。

from を使用してモジュールをインポートする

モジュールのコード全体をインポートする代わりに、モジュールから必要な関数と変数名のみをインポートするなど、モジュールのごく一部だけをインポートすることも可能です。

特定のものだけをインポートしたい場合は、「from」キーワードを使用して必要なものだけをインポートできます。

したがって、構文は次のとおりです

from  module import your function_name , variables,... etc.

コードのテストに使用されるフォルダー構造は次のとおりです。

modtest/
	test.py
	display.py	

test.pyには、以下に示す2つの関数があります。

ファイル名 : test.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

次に、display_message() 関数を使用します。インポートする関数または変数は、以下のように直接アクセスできます。

ファイル名 : 表示.py

from test import display_message
print(display_message())

出力:

Welcome to Guru99 Tutorials!

ここで、display_message1() 関数を使用すると、以下に示すように、関数が定義されていないというエラーが発生します。

from test import display_message
print(display_message1())

出力:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

モジュールからすべてをインポートする

importコマンドを使用すると、importコマンドの後にモジュール名(つまり、使用するファイル名またはライブラリ名)を指定することで、モジュール全体をインポートできます。

構文:

Import module

またはを使用して

from module import *

コードのテストに使用されるフォルダー構造は次のとおりです。

modtest/
	test.py
	display.py	

以下はtest.py内のコードの詳細です。

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

インポートモジュールの使用

インポートしたモジュール名だけでは、モジュール内の変数や関数を参照することはできません。参照するには、変数や関数の前にモジュール名を付ける必要があります。

例:

ファイル名 : 表示.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

モジュール名「test」は、モジュール「test」内の関数や変数を参照するために使用されます。

出力:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

import の使用 *

を使用した例を見てみましょう 輸入 *。 使い方 輸入 *の場合、以下の例に示すように、関数と変数に直接アクセスできます。

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

出力:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

dir( ) 関数

dir() は組み込み関数です Pythondir() は、指定されたオブジェクトの組み込みプロパティを含む、すべてのプロパティとメソッドを返します。

したがって、モジュールに対して dir() を使用すると、モジュール内に存在する変数と関数を取得できます。

以下は、モジュールに対する dir() の動作例です。Car.py というクラスがあるので、Car をインポートして dir() に代入し、出力結果を見てみましょう。

コードをテストするフォルダー構造は次のようになります。

test prop/
	Car.py
	test.py	

ファイル名: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

ファイル名: test.py

import Car

class_contents = dir(Car)
print(class_contents)

出力には、クラスの名前と Car.py で定義されているすべての関数が表示されます。

また、組み込みモジュールのdir()を使用することもできます。 Python同じことを試してみましょう。 JSON 以下の例に示すようにモジュールを使用します。これにより、モジュールで使用可能なすべてのプロパティとメソッドが表示されます。 JSON モジュールを開きます。

Import json
json_details = dir(json)
print(json_details)

出力:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

エクストラ

パッケージとは、その中に定義されているすべてのモジュールを含むディレクトリです。 Python インタプリタはそれをパッケージとして扱います。ディレクトリには __init__.py ファイルが必要です。__init__.py によってディレクトリがパッケージになります。これから作業するパッケージの構成は以下のとおりです。

パッケージ Python

パッケージの名前は、 マイパッケージパッケージの使用を開始するには、mypackage/ という名前のディレクトリを作成します。そのディレクトリ内に、__init__.py という名前の空のファイルを作成します。さらに、module1.py、module2.py、module3.py という 3 つのファイルを作成し、スクリーンショットに示すように関数を定義します。以下に、module1.py、module2.py、module3.py の詳細を示します。

module1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

module2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

module3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

その パッケージ 使用準備が整いました。test.py に以下のように記述するように、任意のファイル内でパッケージを呼び出してください。

ここでは、mypackage.module1 がインポートされ、次のようなエイリアス名が付けられます。 モード1同様に、mypackage に含まれる他のモジュール module2.py と module3.py も使用できます。

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

出力:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

先ほど、内部に関数を含むシンプルなモジュールを使ってパッケージの動作を説明しました。プロジェクトによっては、サブパッケージ(つまり、クラスが定義されたモジュールを含むサブフォルダ)を持つパッケージを作成することもできます。

Python モジュール検索パス

実行中に、 Python 伝わってくる インポートモジュール名すると、インタープリタはモジュールを探そうとします。組み込みモジュールリストでモジュールを検索し、次に sys.path で定義されているすべてのディレクトリを検索します。

要約すると、インタープリターはモジュールを見つけるために次の検索を実行します。

  1. 現在のディレクトリ内。
  2. 組み込みモジュール一覧に。
  3. sys.path ディレクトリ内。

sysモジュールをインポートしてsys.pathを出力すると、sys.pathの詳細を取得できます。以下に示すように、ディレクトリの一覧が表示されます。

importsys
print(sys.path)

出力:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

要件に応じてパスを変更し、ディレクトリを保持することもできます。

インポートでのモジュールエイリアスの使用

モジュール名にエイリアス名を付けることで、モジュール名をより短い形式に変換することもできます。エイリアスは、 as キーワード。

構文:

import filename as alias name

コードをテストするフォルダー構造は次のようになります。

Mod test/
	test.py
	display.py	

以下はtest.py内のコードです。

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

次に、display.py で test.py のエイリアスを使用します。

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

テストモジュールに使用されるエイリアスはtです。したがって、test.pyの関数と変数は、エイリアスtを使用して参照できます。

出力:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

絶対インポートと相対インポート Python

ファイルを別のファイル内のモジュールとしてインポートする方法がわかりました。 フォルダー内で利用可能なファイルを管理する方法を見てみましょう。 フォルダー内のファイルは、絶対インポートまたは相対インポートを使用してインポートできます。

以下に示すようなプロジェクト フォルダー構造があるとします。

絶対インポートと相対インポート Python

ルートフォルダはmyproject/です。その中にpackage1とpackage2という2つのサブフォルダがあります。

package1フォルダには、module1.pyとmodule2.pyという2つのモジュールが含まれています。

フォルダー package2 には、3 つのクラス myclass.py、module4.py を含むサブパッケージ subpkg、および最後の moduleXNUMX.py があります。

  • module1.pyには、myfunc1という関数があります。
  • module2.pyには、myfunc2という関数があります。
  • module3.pyには、myfunc3という関数があります。
  • module4.pyには、myfunc4という関数があります。

絶対インポートの使用

絶対パスでインポートする場合は、プロジェクトのルートフォルダからモジュールの完全なパスを追加する必要があります。

それでは、各モジュールに存在する関数を参照するために、絶対インポートをどのように利用するかを見ていきましょう。

関数 myfunc1 を使用するには、次のようにインポートする必要があります。

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

関数 myfunc3 を使用するには、次のようにインポートする必要があります。

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

絶対インポートを使用する利点と欠点

絶対インポートを使用する利点は次のとおりです。

  • 簡単に tracコードチェックのためにモジュールを戻してください。
  • 使いやすく、とても簡単です。
  • プロジェクトが別のパスに移動された場合でも、インポート内容は変更されません。

絶対インポートを使用するデメリット

絶対インポートを使用する際のデメリットは以下のとおりです。

  • モジュールがネストされていて、モジュール名が長い場合、インポートパスが非常に長くなる可能性があります。

相対インポートの使用

上記と同じフォルダ構造を前提として、相対インポートを使用して同じファイルをインポートする方法を見ていきましょう。

相対インポートでは、インポートするモジュールは現在の場所、つまりインポート文が存在する場所からの相対的な位置になります。

構文

相対インポートでは、次を使用してインポートするときにモジュール名の前にピリオド (.) を追加する必要があります。 from.

モジュールが現在の位置から1つ上の階層にある場合、モジュール名の前にピリオド(..)が2つ付きます。

上記のフォルダ構造図を参照すると、参照する必要のある以下のモジュールとその機能があります。

  • module1.pyには、myfunc1という関数があります。
  • module2.pyには、myfunc2という関数があります。
  • module3.pyには、myfunc3という関数があります。
  • module4.pyには、myfunc4という関数があります。

関数 myfunc1 を使用するには、次のようにインポートする必要があります。

from  .module1  import  myfunc1

関数 myfunc3 を使用するには、次のようにインポートする必要があります。

from  .subpkg.module3  import  myfunc3

相対輸入のメリット

  • 相対インポートの操作は簡単です。
  • 現在の場所からのインポートは、絶対インポートと比較して短縮できます。

相対輸入のデメリット

  • 相対インポートを使用すると、 tracコードが存在する場所に戻ります。

よくあるご質問

Python モジュールが見つかりません。ファイル名が正しいか、sys.path または現在のフォルダに存在するか、アクティブな仮想環境にパッケージがインストールされていることを確認してください。サードパーティモジュールの場合は、pip install に続けてパッケージ名を実行してください。

まずインストールしてください ピップ Python パッケージマネージャー(例:pip install pandas)を使用します。環境にインストールしたら、import pandasで通常どおりインポートできます。jsonなどの組み込みモジュールはインストール不要です。

循環インポートとは、2つのモジュールが互いをインポートし合い、片方のモジュールが部分的にしかロードされない状態を指します。これを解決するには、共有コードをマージするか、必要な関数内でインポートを行うか、特定の名前ではなくモジュール全体をインポートしてください。

このガードは、ファイルが直接実行される場合にのみコードを実行し、インポートされた場合には実行しません。これがないと、インポートのたびにモジュールのトップレベルのステートメントが再実行されてしまいます。これにより、再利用可能な関数をスクリプト形式のテストコードから分離することができます。

いいえ。 Python モジュールを一度実行した後、sys.modules にキャッシュし、そのオブジェクトを後続のインポートで再利用します。開発中に強制的に再読み込みするには、importlib.reload(module) を呼び出します。

プラグインの読み込みなど、実行時にのみモジュール名が判明する場合は、importlib.import_module(“name”) を使用してください。この関数はモジュールオブジェクトを返すため、通常のインポートと同様にその関数にアクセスできます。

機械学習コードは、NumPy、pandas、scikit-learn、TensorFlow、およびPyをインポートします。Torch をモジュールとして使用します。チームはまた、独自のパイプラインを再利用可能なモジュールとパッケージに分割し、スクリプト間で共有される前処理関数とトレーニング関数をインポートします。

はい。GitHub Copilotとエージェントアシスタントは、入力中にインポート行を提案したり、不足しているインポートを追加したり、インポートエラーの解決を支援したりします。提案を信頼する前に、モジュールがインストールされていること、および名前が環境と一致していることを必ず確認してください。