1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL への online-judge-tools (oj) 導入メモ 2025年5月時点

Posted at

はじめに

新しいパソコン(Windows11)で、WSLでonline-judge-tools(ojコマンド)を使えるようセッティングしようとしたら、はまりました。解決策をメモします。環境は以下のとおりです。

  • Windows 11
  • WSL上のUbuntu 24.04
  • Ubuntu上のPython 3.12
  • online-judge-tools 11.5.1

はまった内容3点

  1. インストールできない
  2. ojが動かない
  3. AtCoderにログインできない

それぞれ解決策を書いていきます。

はまりポイント1:インストールできない

現象

pip3 install online-judge-tools

を実行しても以下のとおりエラーになる。

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
(後略)

原因

WSLをインストールした際のデフォルトのOSは、2024年5月ころからUbuntu 24.04になったようです。Ubuntu 24.04ではPythonのバージョンが3.12です。Python 3.12以降では、システムPythonでは直接pip installを使えないようになっている、らしいです。

解決方法

pip3の代わりにpipxを使いましょう。

①pipxのインストール

以下を実行します。

sudo apt update
sudo apt install pipx
pipx ensurepath

その後、一度ターミナルを閉じるか、source ~/.bashrc を実行して PATH を更新します。

②pipxを使ってojをインストール・・・?

この後普通に進めると"pipx install online-judge-tools"としてしまうところですが、それはNGです。次のはまりが発生します。

はまりポイント2:ojが動かない

現象

ojを実行すると以下のようにエラーが出る。

$ oj --version
Traceback (most recent call last):
  (中略)
ModuleNotFoundError: No module named 'distutils'

原因

Python 3.12にはdistutils モジュールが入っていないためです。Python 3.11以前は非推奨でありながら入っていましたが、Python 3.12以降削除されたらしいです。

解決方法

ojだけPython 3.11で動くようにします。

①Python 3.11をインストール

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv

②pipx で oj をインストール

pipx install --python python3.11 online-judge-tools

※ 誤って既に3.11を指定せずインストールしてしまっている場合は、以下で上書きインストールできる

pipx reinstall online-judge-tools --python python3.11

はまりポイント3:AtCoderにログインできない

現象

以下を実行し、ユーザー名とパスワードを入力してもログインができない。ブラウザからならログインできる。

oj login https://atcoder.jp/

原因

AtCoderがセキュリティ強化をしているため、だと思います。

解決方法

以下の素晴らしい記事に書いてあります。
https://kaiyou9.com/acc_and_oj_login_failed/

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?