Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのインポートの実装(importlib)


importlibパッケージは、Pythonインタープリターに移植可能なPythonソースコードでのimportステートメントの実装を提供します。これにより、Python以外のプログラミング言語で実装されたものよりも理解しやすい実装も提供されます。

このパッケージは、インポートを実装するためのコンポーネントも公開し、ユーザーがインポートプロセスに参加するための独自のカスタムオブジェクト(インポーターと呼ばれる)を簡単に作成できるようにします。

importlibパッケージには、import_module()

という名前の重要な関数があります。

import_module():

この関数は、プログラムでモジュールをインポートします。モジュールの名前は、関数の最初のパラメーターです。オプションの2番目のパラメーターは、パッケージ名を指定します。

invalidate_caches():

この関数は、ファインダーの内部キャッシュを無効にします。プログラムの実行中にモジュールが作成/インストールされた場合は、この関数を呼び出して、すべてのファインダーが新しいモジュールの存在に気付くことを保証する必要があります。

reload():

この関数は、以前にインポートされたモジュールを再ロードします。これは、外部エディターを使用してモジュールのソースファイルを編集し、Pythonインタープリターを離れずに新しいバージョンを試してみたい場合に便利です。

例:

以下と同じコードを持つmodule1.pyとmodule2.pyという名前の2つのPythonスクリプトを作成します。

#module1
def main():
   print ('module imported', __name__)
   return
if __name__=='__main__':
   main()

importlibパッケージを使用してこれらのモジュールを動的にインポートします。

>>> import importlib
>>> mod=importlib.import_module('module1')
>>> mod.__name__
'module1'
>>> mod=importlib.import_module('module2')
>>> mod.__name__
'module2'
>>> mod.main()
module imported module2
>>>

importlibパッケージには、次のサブモジュールが含まれています。

importlib.abc

このモジュールには、インポートで使用されるすべてのコア抽象基本クラスが含まれています。コアABCの実装を支援するために、コア抽象基本クラスのいくつかのサブクラスも提供されています

importlib.resources

このモジュールは、Pythonのインポートシステムを利用して、パッケージ内のリソースへのアクセスを提供します。

importlib.machinery

このモジュールには、モジュールの検索と読み込みのインポートに役立つさまざまなオブジェクトが含まれています。

importlib.util

このモジュールには、インポーター用のユーティリティコードがあります。これには、インポーターの構築に役立つさまざまなオブジェクトが含まれています。以下の重要な機能が定義されています。

find_spec():

この関数は、指定されたパッケージ名に関連するモジュールの仕様を検索します。名前がサブモジュール(ドットを含む)の場合、親モジュールは自動的にインポートされます。名前とパッケージはimport_module()と同じように機能します。

module_from_spec(spec)

specとspec.loader.create_moduleに基づいて新しいモジュールを作成します。

例:

import importlib.util
def check_module(mod):
   spec = importlib.util.find_spec(mod)
   if spec is None:
      print('Module: {} not found'.format(mod))
      return None
   else:
      print('Module: {} can be imported!'.format(mod))
      return spec
   def import_module(spec):
      mod = importlib.util.module_from_spec(spec)
      spec.loader.exec_module(mod)
      return mod
if __name__ == '__main__':
   spec = check_module('notamodule')
   spec = check_module('module1')
   if spec:
      mod = import_module(spec)
      mod.main()

出力:

Module: notamodule not found
Module: module1 can be imported!
module imported module1

  1. Python CSVモジュール:ステップバイステップガイド

    Python CSVモジュールは、CSVファイルを処理するために使用されます。 CSVファイルには多くの情報を保持できます。CSVモジュールを使用すると、PythonでCSVファイルの読み取りと書き込みを行うことができます。 reader() および writer() 関数。 データの読み取り、書き込み、および操作は、プログラミングの重要な部分です。したがって、Pythonでファイルを処理する方法を知っておくと、外部ソースからデータを読み書きできるので便利です。 たとえば、あなたが地元のアイスクリームショップのオーナーで、顧客のトレンドについてもっと知りたいとしましょう。 Pyth

  2. Pythonでpydocモジュールを使用したドキュメントの生成

    はじめに pydoc moduleは、Pythonモジュールからドキュメントを自動的に生成します。ドキュメントは、コンソールにテキストのページとして保存したり、Webブラウザに表示したり、HTMLファイルとして表示したりすることができます。 この記事では、さまざまなケースでこれらのドキュメントを表示する方法を学び、Pythonスクリプト用の独自のドキュメントを作成するのに役立つdocstringについても学びます。 pydocの使用法がわかったので、始めましょう。 はじめに pydocモジュールはPythonと一緒にパッケージ化されているため、個別にダウンロードしてインストールする