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

Pythonのrunpyモジュールでモジュールを検索・実行する方法

Pythonのコマンドラインオプションである-mオプションは、指定されたモジュールを検索し、__main__モジュールとして実行します。この仕組みは、Python標準ライブラリのrunpyモジュールによって内部的に支えられています。runpyを使うと、ファイルシステムではなくPythonのモジュール名前空間を通じてスクリプトを特定し、実行することができます。

runpyモジュールが定義する2つの関数

run_module()

この関数は、指定されたモジュールのコードを実行し、その結果得られるモジュールのグローバル辞書(globals)を返します。

mod_name引数には絶対モジュール名を指定します。モジュール名が通常のモジュールではなくパッケージを指している場合、そのパッケージがインポートされ、パッケージ内の__main__サブモジュールが実行され、その結果のグローバル辞書が返されます。

モジュールコードが実行される前に、特別なグローバル変数である__name____spec____file____cached____loader____package__がグローバル辞書に設定されます。

  • __name__:指定されたモジュールがパッケージの場合は mod_name + '.__main__' に、それ以外の場合は mod_name 引数の値に設定されます。
  • __file____cached____loader____package__:モジュールspecに基づいて、通常どおり設定されます。

run_path()

この関数は、指定されたパスにあるファイルのコードを実行し、その結果得られるモジュールのグローバル辞書を返します。指定できるパスは、Pythonソースファイル、コンパイル済みバイトコードファイル、あるいは__main__モジュールを含む有効なsys.pathエントリ(例:トップレベルに__main__.pyを含むzipファイルなど)です。

こちらも同様に、モジュールコードの実行前に__name____spec____file____cached____loader____package__がグローバル辞書に設定されます。

__name__は、オプション引数run_nameNoneでない場合にはその値に、そうでない場合には '<run_path>' に設定されます。

実行例

まず、次のスクリプトを runpyexample.py という名前で保存します。

# runpy example
def add(x, y):
    return x + y

def main():
    x, y = 10, 20
    print(add(x, y))
    return

if __name__ == '__main__':
    main()

通常、このスクリプトは次のようにインポートして実行します。

>>> import runpyexample as rp
>>> rp.main()
30
>>>

しかし、runpyモジュールを使えば、実際にインポートすることなくスクリプトを実行できます。

>>> import runpy
>>> runpy.run_module('runpyexample', run_name='__main__')
30

run_path()関数を使うことも可能です。

>>> runpy.run_path('runpyexample.py', run_name='__main__')
30

前述のとおり、runpyはPythonコマンドラインの-mスイッチを支えているため、次のようにコマンドから直接実行することもできます。

E:\python37>python -m runpyexample
30
  1. Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説

    Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される

  2. PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】

    Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins