Skip to content
Go back

pythonスクリプトをCLIツールとしてインストールする

Published:  at  12:00 AM

時たま利用する、単体のPythonスクリプトがいくつかある。

利用する頻度としては微妙なラインで、わざわざパッケージ化するほどではないが、誰かに共有したり、複数の端末でインストールしたい場合には、1発のコマンドでインストールできると便利だ。

uvuv tool installコマンドを使うと、簡単に隔離された環境にPythonパッケージをCLIとしてインストールできる。だが、現状は単一のPythonスクリプトをインストールすることはできない。少なくとも、1つのPythonスクリプトに加えて、pyproject.tomlが必要になる。

単一のPythonスクリプトをインストール可能にするfeature requestuvのレポジトリで作成されているが、まだ実装されていないのが現状だ。

copier template

そこでcopierを使って、PythonスクリプトをCLIツールとしてuv tool installでインストールするためのミニマムなファイルを生成するテンプレートを作成した。

ファイルを生成するには、uvをインストールした環境で、以下のコマンドを実行する:

uvx copier copy gh:kj-9/uv-tool-min-copier your-tool-dir

プロンプトでいくつかの質問に回答を求められるので、生成するCLIツール名など適宜入力する。

途中で"Do you want to use Click for command line interface?"という質問が表示される。yを入力すると、Clickを使ったCLIツールのスターターコードがスクリプトに追加される。

入力が完了すると以下の3つのファイルが生成される:

main.pyはCLIツールのスクリプト本体。こちらを編集してツールを作成する。

pyproject.tomlはuv toolとしてインストールするため、ミニマムな内容のみを記述した設定ファイル。

.gitignoreはインストールには不要だが、プロジェクトをGitで管理する場合のために生成している。

インストール

生成したプロジェクトディレクトリを指定して、uvでインストールする:

uv tool install ./your-tool-dir -e

-eオプションは、編集モードでインストールするためのオプション。これにより、インストールされたツールのソースコードを編集することができる。

gitリポジトリとしてgithubに公開した場合、以下のコマンドでインストールできる:

uv tool install git+https://github.com/{github-username}/{repo-name}

Gistとして公開する場合は:

cd your-tool-dir
gh gist create main.py pyproject.toml --description "ツールの説明"

Gist自体もGitレポジトリなので、GistのURLを指定すればインストールできる:

uv tool install git+https://gist.github.com/{github-username}/{gist-id}


Previous Post
pytestでフラグ指定した時のみ統合テストを実行する
Next Post
atuin: コマンド履歴管理ツール