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

Pythonのパッケージ拡張ユーティリティ


特定のパッケージのモジュール検索パスに追加して、パッケージに含まれるリソースを操作する場合は、Pythonライブラリのpkgutilモジュールを使用する必要があります。 Pythonパッケージのインポートルールを変更するための関数が含まれています。パッケージ内に分散されたファイルから非コードリソースをロードすることも可能です。

extend_path(path、name)

パッケージを構成するモジュールの検索パスを拡張します。使用目的は、次のコードをパッケージの__init__。py

に配置することです。
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

extend_path()は、sys.pathをスキャンして、2番目の引数として指定されたパッケージにちなんで名付けられたサブディレクトリを含むディレクトリを探します。ディレクトリのリストは、最初の引数として渡されたパス値と組み合わされ、パッケージのインポートパスとして使用するのに適した単一のリストとして返されます。

find_loader(fullname): 指定されたフルネームのモジュールローダーを取得します。

get_importer(path_item): 指定されたpath_itemのファインダーを取得します。

get_loader(module_or_name)

module_or_nameのローダ​​ーオブジェクトを取得します。

iter_importers(fullname =''): 指定されたモジュール名のファインダーオブジェクトを生成します。

iter_modules(path =None、prefix =''): パス上のすべてのサブモジュール、またはパスがNoneの場合は、sys.path上のすべての最上位モジュールのModuleInfoを生成します。

>>> pk = pkgutil.iter_modules()
>>> for p in pk:
   print (p[1])

walk_packages(path =None、prefix =''、onerror =None): パス上で再帰的にすべてのモジュールのModuleInfoを生成します。パスがNoneの場合は、アクセス可能なすべてのモジュールを生成します。

import pkgutil
import sys
def explore_package(module_name):
   loader = pkgutil.get_loader(module_name)
   for sub_module in pkgutil.walk_packages([loader.filename]):
      _, sub_module_name, _ = sub_module
      qname = module_name + "." + sub_module_name
      print(qname)
      explore_package(qname)

ModuleInfo(module_finder、name、ispkg):これは、モジュールの情報の簡単な要約を保持する名前付きタプルを返します。


  1. Pythonコードのパッケージ化と公開?

    Pythonは、パッケージを作成または公開するための非常に簡単な方法を提供します。 Pythonでのパッケージ管理は、さまざまなツールから利用できます- ピップ- オペレーティングシステムへのソフトウェアパッケージの手動インストールや更新を事実上排除するため、これは依然として推奨される選択肢の1つです。パッケージの完全なリストとそれに対応するバージョン番号を管理し、個別の個別の環境でパッケージグループ全体の正確な複製を促進します。 Python Package Index(PPI)は、pip.i.eを使用してインストールできるユーザー送信パッケージのパブリックパッケージリポジトリ

  2. Pythonにパスを追加する方法は?

    Pythonは、1991年に最初にリリースされたプログラミング言語です。複数のオペレーティングシステムで使用できるアプリケーションがあり、開発者はその上で新しいコードを記述および開発できます。 Pythonは、開発者と広範なサポートに伴う可能性が非常に大きいため、最も広く使用されているプログラミング言語の1つです。 ユーザーが「python」という単語を入力するたびに 」コマンドプロンプトでエラーが返されます。正しく機能するには、パス全体を指定する必要があります。これは、コマンドプロンプトが出力をロードするために「python.exe」を見つける必要があり、パス全体が指定されていない限り、