Atcoder 環境構築 Python編
はじめに
本記事は(2025/04/18)時点のものです。
本記事は、WSL2 + atcoder-cliとonline-judge-toolsを用いたpython用の環境構築を備忘録としてまとめた記事です。C++は一部置き換えることで同様に環境構築することができます。
日本語の拙さに定評があるため暖かく見守ってください
WSL2 + Ubuntu 24.04.1 LTSで検証しています。WSL2は必須ではないですが、WSL2を使った方が分かりやすく、windowsの環境と競合しないため、オススメします。
online-judge-toolsは以下の機能を有するツールです。
- サンプルケースを取得
- システムケースを取得
- ログイン
- コードを提出
- テストを実行
- リアクティブ問題のテストを実行
- テストケース生成器からテストケースの入力を生成
- テストケースの入力と愚直解からテストケースの出力を生成
atcoder-cliは上記のojと組み合わせて、
- テンプレートの自動展開
- サンプルケースの自動ダウンロード
- その他AtCoderに特化した機能
を持ちます。
それではれっつごー!
必要なもの
この下記4つをまずインストールします!
- WSL2
- Node.js
- python
- python3 venv
WSL2 + Ubuntuの導入
WSL2とは?
WSL2とはWindows Subsystem for Linux 2の略。
Windows上でLinuxを動かすための機能です!
windowsのスタートメニューの検査にwindowsの機能
と入力してwindowsの機能の有効化または無効化を開きます。
下の画像のチェックボックスを有効にしてください。
変更したらPCを再起動します。
次に、Windows PowerShellを起動して以下のコマンドを実行する。
wsl --install
最後に好きなLinux OSを入れて終了です!
MicroSoft Storeもしくはwslからインストールすることができます。
MicroSoft Storeの場合
MicroSoft Storeを起動して、Ubuntu
で検索して好みのものをインストール。
wslの場合
現在入ってるOSの確認
wsl -l -v
入力可能なOSの一覧
wsl --list --online
OSのインストール
wsl --install -d Ubuntu-24.04
インストールできたらwindowsのスタートから検索する、もしくはタスクバーからターミナルのアイコンを右クリックして起動しましょう!
起動するとユーザーの作成が始まるため、ユーザー名とパスワードを設定します。
これでWSLの準備完了です!
以降はWSL2 + Ubuntu上で作業していきます
Node.jsおよびnpmのインストール
Node.jsおよびnpmのインストール
公式のページに従って、fnmと呼ばれるNode.jsのバージョン管理ツールをインストールします。そのあと好きなバージョンのNode.jsとnpmをインストールします。
curl -o- https://fnm.vercel.app/install | bash
対処法
Checking dependencies for the installation script...
Checking availability of curl... OK!
Checking availability of unzip... Missing!
Not installing fnm due to missing dependencies.
NANI?!
どうやらunzipという依存パッケージが見つからないようなので、インストールしてあげます!
sudo apt install unzip
次に、再度fnmをインストールします。
無事完了したらPATHが追加されてるので、一度ターミナルを再起動したあと、fnmでNode.jsをインストールします!
fnm install 22
Node.jsとnpmのバージョン確認
node -v
npm -v
v22.14.0
10.9.2
pythonのインストール
pythonのインストール
・WSLの場合
sudo apt update
sudo apt install python3 python3-pip
python3 -V
Python 3.12.3
仮想環境の作成
PythonをOSによって管理するため、pipで環境を破壊しないためのルールとしてPEP 668というものがあります。そのため、pipを使うには仮想環境を作成して分ける必要があります。なので仮想環境の準備をします!
必要なパッケージをインストール
sudo apt install python3-venv
仮想環境の作成
python3 -m venv myenv
仮想環境のアクティベート
source myenv/bin/activate
(myenv) {ユーザ名}@{PC名}:~$
念のためpythonのPATHが仮想環境になっていることを確認しときましょう
(検証中になぜか変わっていなくて少し苦戦しました...)
which pip3
which python3
which pip
which python
/home/{ユーザー名}/myenv/bin/pip3
/home/{ユーザー名}/myenv/bin/python3
/home/{ユーザー名}/myenv/bin/pip
/home/{ユーザー名}/myenv/bin/python
となれば成功です!
Node.jsとnpmがまだ入ってない場合は下記の手順を参考にしてください。
お疲れ様です!下準備の完了です!
atcoder-cliのインストール
atcoder-cli/わたしろぐを参考にしてインストールします。
npm install -g atcoder-cli
インストールできたか確認
acc -v
2.2.0
online-judge-toolsのインストール
online-judge-toolsを参考にしてインストールします。
PEP 668の影響で--userオプションはつけずに実行します。
pip3 install online-judge-tools
setuptoolsのインストール
online-judge-toolsでは、python3.12以降で廃止されたdistutilsというモジュールを参照しています。そのため、python3.12でインストールして実行するとエラーがでます。その対策としてsetuptoolsをインストールします。
参考記事: 【inshellisense】ModuleNotFoundError: No module named 'distutils' の対処法
pip3 install setuptools
インストールできたか確認
oj --version
online-judge-tools 11.5.1 (+ online-judge-api-client 10.10.1)
accから認識されているか確認
acc check-oj
online-judge-tools is available. found at:
/home/{ユーザー名}/myenv/bin/oj
acloginのインストール
前まではユーザーIDとパスワードの組み合わせによる認証でしたが、現在(2025/4/18時点)AtCoderの仕様が少し変わり、認証にCloudflare Turnstileが追加されました。
(これはJavaScriptを実行させてクライアントがユーザーらしい動きをしているかどうか判定するものっぽい)
これにより、accのログインなどのスクリプトが正常に機能しなくなっています。有志様による修正パッチスクリプトacloginをインストールします。
pip3 install aclogin
くぅ~疲れましたw
これにてインストール完結です!
セットアップ
まず各ツールのログインを行います。
先述した通り、Cloudflare Turnstileの認証でacc loginが機能していないので、acloginを用いてログインします。
acloginを参考に認証情報のクッキーをコピーします。
その後
aclogin
を実行してコピーしたクッキーを貼り付けます。
そして各ツールのログインを行います。
acc login
you logged-in already
OK
oj login https://atcoder.jp
[SUCCESS] You have already signed in.
テンプレートファイルの追加
.config\atcoder-cli-nodejs
以下に構成ファイルを作成していきます。
cd $(acc config-dir)
mkdir template_py
cd template_py
カレントディレクトリであるtemplate_py
に、テンプレートとなるtemplate.json
, main.py
を作成します。
ちなみに、WSL2からエクスプローラーを起動するコマンドは次の通りです。
explorer.exe .
{
"task": {
"program": [
"main.py"
],
"submit": "main.py"
}
}
import bisect
import math
import sys
import copy
#import numpy as np # Pypyでは使えない
from collections import deque,defaultdict,Counter
from itertools import permutations,combinations,product,accumulate
from array import array # 連続メモリ上の配列(数値型で使用,高速)
# al=[chr(ord('a') + i) for i in range(26)]
# Al=[chr(ord('A') + i) for i in range(26)]
DEBUG = False # デバッグ時は True、本番環境では False
def debug_print(*args, **kwargs):
if DEBUG:
print(*args, **kwargs)
#n = int(input())
ここのファイルや名前を、main.cppに置き換えればcppの構成にすることも可能です。
accの設定
先ほどのtemplate_py
ディレクトリをテンプレートファイルとして登録します。
acc config default-template template_py
次に、accを使ってあるコンテストの問題をダウンロードするときに、デフォルトで全問題をダウンロードするように変更します。
acc config default-task-choice all
早速動作するか確認してみましょう
問題を解く用のディレクトリを好きな場所に作成してください!
作成したらそのディレクトリをVScodeで開いてください。
本記事ではルート直下にpy-coder
を作成します。
cd
mkdir py-coder
cd py-coder
code .
などを実行してVScodeで開きます。
VScodeで開けたら、ctl+@
を押してターミナルを起動します。
次のコマンドを実行して、コンテスト用ディレクトリの自動作成を行ってみましょう。
acc new abc321
これでツールのセットアップは完了です!!!
これでほぼ完成まできました!!
あと少しだけです!
ショートカットキー
次のVScode拡張機能を入れます。
- Command Runner/edonet
- WSL/Microsoft
- Python/Microsoft
py-coder
直下に.vscode
フォルダを作成します。
そこにsettings.json
を作成します。内容は下記の通りです。
ここではcommand-runnerにコマンドのエイリアスを登録しています。
-
oj test
は作業中の親ディレクトリに移動して、python3でojのテストコマンドを実行するエイリアスです。 -
acc submit
は作業中の親のディレクトリ名に移動したのち、accの提出コマンドをpypyオプションで実行し、確認の入力をechoで自動化したエイリアスです。 -
execute python
は開いてるpythonファイルを実行するエイリアスです。
{
"command-runner.commands": {
"oj test": "cd ${fileDirname} && oj t -c \"python3 ${fileBasename}\" -d tests",
"acc submit": "cd ${fileDirname} && echo abc$(basename $(pwd)) | acc s ${file} -- --guess-python-interpreter pypy",
"execute python": "cd ${fileDirname} && python3 ${fileBasename}"
}
}
次にVScodeでctl + k
+ctl + s
を押してキーボードショートカットの設定画面に移ります!
下記の内容を追記してします。
{
"key": "ctrl+shift+t",
"command": "command-runner.run",
"args": {
"command": "oj test"
}
},
{
"key": "ctrl+shift+oem_plus",
"command": "command-runner.run",
"args": {
"command": "acc submit"
}
}
,{
"key": "ctrl+shift+e",
"command": "command-runner.run",
"args":{
"command": "execute python"
}
}
main.py
を開いた状態でctl + shift + t
を押してみてください!
自動でサンプルケースのテストが行われるはずです!
テストの確認した後ctl + shift + +
を押すと提出ができます!
これにて環境構築終了です!あとはお好みにあわせて変更してください!
お疲れ様でした!!
もし不明な点や間違えている点があれば遠慮なくコメントお願いします!
Discussion