- Pythonのモジュールはコマンドラインツールとして使える
- たとえば
webbrowser モジュールをコマンドラインで実行すると、デフォルトのWebブラウザで指定したURLを開ける
- Python標準ライブラリには、このようなモジュール兼スクリプトのハイブリッドが多数含まれている
-m オプションを使ってPythonを実行すると、指定したPythonモジュールをスクリプトのように実行する
- 一部のモジュールは
import 時に何らかの動作をする。たとえば antigravity モジュールは XKCD の漫画をWebブラウザで開く。これをコマンドラインで実行すると、モジュールを import したのと同じ効果になる
- これを「import side effect」と呼び、多くのモジュールはこれを避けている。
antigravity のようなイースターエッグモジュールは例外
- import side effect を避けるモジュールは、モジュールとして
import されたときとスクリプトとして実行されたときで動作を変えるために __name__ 変数を使う
便利な汎用コマンドラインツール
python -m http.server: シンプルなWebサーバーを起動
python -m webbrowser: Webブラウザを起動
python -m json.tool: JSONデータを見やすく整形
python -m calendar: コマンドラインでカレンダーを表示
Windowsで特に便利なツール
python3.12 -m uuid: uuidgen CLIユーティリティに類似
python3.12 -m sqlite3: sqlite3 CLIユーティリティに類似
python -m zipfile: zip / unzip CLIユーティリティに類似
python -m gzip: gzip / gunzip CLIユーティリティに類似
python -m tarfile: tar CLIユーティリティに類似
Pythonコード作業時に便利なツール
python -m pip: サードパーティ製Pythonパッケージをインストール
python -m venv: 仮想環境を作成
python -m pdb: Pythonデバッガーを実行
python -m unittest: unittestテストを実行
python -m pydoc: ドキュメントを表示
python -m doctest: 指定ファイルの doctest を実行
python -m ensurepip: pip をインストール
python -m idlelib: IDLE グラフィカルREPLを実行
python -m zipapp: Pythonモジュールを実行可能ZIPに変換
python -m compileall: Pythonファイルをバイトコードへ事前コンパイル
Pythonコード解析ツール
python -m tokenize: Pythonモジュールをトークンに分解
python -m ast: コードの抽象構文木を表示
python -m dis: Pythonコードをバイトコードに逆アセンブル
python -m inspect: Pythonオブジェクトのソースコードを調べる
python -m pyclbr: モジュール内オブジェクトの概要を表示
Pythonのイースターエッグとして動く楽しいスクリプト
python -m __hello__: "Hello world!" を出力
python -m this: Pythonの禅(The Zen of Python, PEP 20)を出力
python -m antigravity: WebブラウザでPython関連の XKCD 漫画353番を開く
python -m turtledemo: turtle モジュールで描けるさまざまな図形のデモを表示
その他のPython関連ツール
python -m asyncio: asyncio対応のPython REPLを実行
python -m cProfile: Pythonプログラムをプロファイリング
python -m pstats: cProfileで生成されたプロファイル統計を表示
python -m pickle: pickleファイルの内容を表示(high-level)
python -m pickletools: pickleファイルを分解(low-level)
あまり便利ではないツール
python -m timeit: Python式の実行時間を測定
python -m site: Pythonの "site" 情報を表示
python -m sysconfig: Python設定の詳細を表示
python -m platform: 現在のプラットフォーム情報を表示
python -m mimetypes: ファイルの MIME type / 拡張子情報を表示
python -m quopri: raw email データをエンコード / デコード
python -m filecmp: 2つのディレクトリ内容を比較
python -m tabnanny: Pythonファイルのタブとスペース混在をチェック
2件のコメント
わあ、思ったより良い機能が多いですね。すごい。
閉域網環境の Linux サーバーに zip ファイルを持ち込んだものの、
unzipコマンドがなくて、python -m zipfileモジュールで展開して作業を進めた記憶がありますね