コマンドラインで-m
オプションでモジュールを指定することで、モジュールを実行することができます。
実行例
たとえば、Pythonで変数の代入にどの程度時間がかかるかを調べたいとします。
Pythonインタプリタを起動することなくコマンドライン上で計測が可能です。
(timeit
は時間を計測するPythonモジュール)
1 | >>> python -m timeit 'a=1' |
解説
ドキュメントには以下のような記述があります。
sys.pathから指定されたモジュール名のモジュールを探し、その内容をmainモジュールとして実行します。
つまり、モジュールを直接実行することで、-m
オプションと等価な処理を実行できそうです。
timeit
モジュールを例に確認してみましょう。
まずtimeit
を探します。(コマンドは適宜、読み替えてください)
1 | sudo find / -name timeit.py |
仮想環境の構築等で、複数ヒットするかもしれません。
その場合は、下記のようにして-m
オプション実行時に実際に検索しているパスも参考にしてください。
1 | python -c 'import sys;print(sys.path)' |
適切なtimeit.py
が見つかったとしましょう。以降、フルパスを以下のように表現します。
[YOUR_PATH]/timeit.py
では、いよいよ二つのコマンドが等価であることを確認してみましょう。
1 | python -m timeit 'a=1' |
1 | [YOUR_PATH]/timeit.py 'a=1' |
等価であることが確認できたと思います。
-mオプションとともによく使うモジュール
http.server
1 | python -m http.Server |
Webサーバを簡単に立てることが出来る。
(Python2.xではSimpleHTTPServer
)
http.server(旧SimpleHTTPServer)の使い方で詳しい使い方を紹介しています。
unittest
1 | python -m unittest test_test_module1 |
base64
base64エンコードが出来る。
1 | python3 -m base64 a.png |
比較用コマンド
1 | base64 -i a.png |
json
jsonを整形することが出来る。
1 | python -m json.tool sample.json |
記事情報
- 投稿日:2020年3月20日
- 最終更新日:2020年5月16日