4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(ソースコードメモ)Pythonのモジュール実行

Last updated at Posted at 2019-07-17

#動作概要
以下のように、xxxx (例:http.serverやpdb)でモジュールを指定して実行出来る。

python -m xxxx yyyy.py

上記のコマンドでは、module(モジュール)が直接呼び出されたとき、いずれか(ファイルもしくはディレクトリ)の処理が行われる。

  • (ファイル)該当Pythonスクリプトが実行される。具体的には、__name__変数が__main__となる時の処理が、実行される。
  • (ディレクトリ)該当ディレクトリを指定した場合、配下にある__main__.pyというファイルが、実行される。

これにより、(モジュールとして呼び出している)スクリプトxxxxから(最終的に解析を行う)スクリプトyyyyを呼び出す処理等が容易に出来る。
これは、PEP338で定義されておりPythonでは、runpyモジュールで実装されている。

#モジュール実行をサポートしているモジュール例
Python組み込みだと以下のモジュールが代表的なものである。

  • http.server (Webサーバ)
  • pdb (デバッガ)
  • cProfile (プロファイラ)
  • unittest (テストフレームワーク)

それ以外だと、以下がある。なお、pytestには、更に似たようなpluginsのロード機能がある (-pオプション)。

  • pytest (テストフレームワーク)(上記unittestの機能拡張のようなもの)
  • tensorboard(機械学習モニタリングツール)(python -m tensorboard.mainで使う)

#Pythonインタープリターでの変数設定
さて、Pythonインタープリターは、Pythonスクリプトを実行する時に該当スクリプトのグローバル変数、__name__等を設定する。直接呼び出されたファイルでは、__name____main__と設定される。設定されているパラメータは、Pythonから組み込み関数globals()を実行することにより確認できる。なお、グローバル変数を設定する関数はC言語だが_run_codeである。

#参考資料
##概要説明資料

##ソースコード

Python 3.7のコードより

その他のモジュール

その他

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?