はじめまして、アルゴ班のComaviusです。最近はDockerで遊んだり書きなれていないフロントエンド周りで苦しんだりしています。
この記事では、online-judge-toolsを導入しようとしたらpipを使うなと怒られた方や他の問題に突き当たった方に向けて、一つの解決策を届けたいと思います。
Ryeとは?
Ryeとは何でしょうか?
Rye is a comprehensive project and package management solution for Python. Born from its creator's desire to establish a one-stop-shop for all Python users, Rye provides a unified experience to install and manages Python installations,
pyproject.toml
based projects, dependencies and virtualenvs seamlessly. It's designed to accommodate complex projects, monorepos and to facilitate global tool installations.
https://rye.astral.sh/
だそうです。ここに書いてある通り、Ryeは一元的にPythonのプロジェクトを管理してくれるツールです。具体的には、pipを通じたパッケージのインストールやバージョンの異なるPythonインタプリタの管理、venvの生成など様々な機能を持っています。今回特に注目したいのが、「It's designed (中略) to facilitate global tool installations.」の部分で、Ryeはonline-judge-toolsのようなpipを通してインストールできるcliツールに関してもサポートしてくれています。
導入
では実際に導入していきましょう。
Ryeのインストール
まずはRyeをインストールします。これは環境によって手順が違うのでRyeの公式サイトの指示に従ってください。ここでRyeのパスを~/.profile
に追加するかを聞かれるので、特にこだわりがない場合は追加することをおすすめします。
Online-Judge-Toolsのインストール
次にRyeを使ってOnline-Judge-Toolsをインストールします。
$ rye install online-judge-tools --python 3.10
ここでPythonのバージョンを指定しないと、oj
コマンドがPython3.12の上で実行されてエラーを吐きます。
$ oj --version
でOnline-Judge-Toolsがインストールされていることを確認しましょう。
余談
PythonのプロジェクトをRyeで管理すると、環境による挙動の変化を予防でき、requirements.txt
より読みやすいpyprojects.toml
を使って宣言的にパッケージを指定できます。
終わりに
この記事がみなさんの役に立てば幸いです。どうかよい競プロライフをお過ごしください。