Pythonスクリプトをコマンド化したい

ターミナルで使える自作コマンドを作成する

今回は、簡単なPythonスクリプトを自作コマンドとして実行できるようにする方法を紹介します。

手順1: スクリプトを作成する

まず、実行したいスクリプトをPythonで作成します。例えば、hello.pyというファイルを作成し、以下の内容を記述します。

#!/usr/bin/env python3

import sys

def main():
    if len(sys.argv) > 1:
        name = sys.argv[1]
        print(f"Hello, {name}!")
    else:
        print("Hello, World!")

if __name__ == "__main__":
    main()

手順2: スクリプトを実行可能にする

ターミナルでスクリプトが保存されているディレクトリに移動し、以下のコマンドを実行してスクリプトを実行可能にします。

chmod +x hello.py

手順3: スクリプトをパスの通ったディレクトリに配置する

作成したスクリプトを、システムのパスが通っているディレクトリに配置します。一般的には/usr/local/binなどが使われます。以下のコマンドを実行します。

sudo mv hello.py /usr/local/bin/hello

hello.pyをhelloという名前に変更して移動します。

手順4: コマンドを実行する

これで、ターミナルでhelloと入力することでスクリプトが実行できるようになります。

hello

オプションを付けて実行することもできます。

hello YamadaHanako

Pythonスクリプトが先頭にpython3と付けずに実行できるのは、スクリプトの最初の行に「シバン(shebang)」と呼ばれる特別な行を記述しているためです。シバン行は、スクリプトを実行するためのインタプリタを指定します。

#!/path/to/interpreter

シバン(Shebang)の役割

シバン行は、スクリプトファイルの最初の行に書かれるもので、以下の形式を取ります。

Pythonスクリプトの場合、通常は以下のように記述します。

この行は、システムに対してこのスクリプトを実行する際にpython3というインタプリタを使用するように指示します。具体的には、/usr/bin/envはシステムの環境変数を使って適切なpython3の場所を探し出し、それを使ってスクリプトを実行します。

シバン行が無い場合

シバン行がない場合、スクリプトを実行するためには明示的にPythonインタプリタを指定する必要があります。例えば、次のようにコマンドを実行する必要があります。

python3 hello.py

シバン行を使用するメリット

シバン行を使用することで、以下のメリットがあります。

1. 可搬性: スクリプトを他のシステムに移動しても、インタプリタが適切に設定されていればそのまま実行できる。
2. 簡便性: 実行時に毎回インタプリタを指定する必要がない。
3. 一貫性: スクリプト内で使用するインタプリタが明確に指定されているため、同じ環境で一貫した動作が保証される。

まとめ

#!/usr/bin/env python3というシバン行をスクリプトの先頭に追加することで、ファイルを実行可能にし、シェルから直接実行できるようになります。



この記事が気に入ったらサポートをしてみませんか?