ざっくばらん

へたれエンジニアの日々

AtCoder-cli(online-judge-tools)を導入しようとして詰まった

TL;DR

なんかOpenSSLのバージョン関係で詰まったが、urllib3のバージョンを2.x => 1.xにしたらいけた。

AtCoder-cliを導入しようとして詰まった

2ヶ月弱くらい何も分からないながらABCに参加していて、そろそろ手元でテストとか提出とかできるように整備したいなと思った。

そこで、この辺りの情報を参考にさせていただいて導入を進めたものの、少々詰まってしまったので備忘録として残しておく。

どう詰まったか

online-judge-toolsをpip installし、Successしたのでoj -hで動作確認しようとしたところ下記のエラーになった。

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3. See: https://github.com/urllib3/urllib3/issues/2168

環境構築時のエラーには未だに冷静でいられない。。

Issueを読む

See: https://github.com/urllib3/urllib3/issues/2168とあるので、とりあえずは見てみる。

OpenSSLとurllib3についての記述があり、このIssueでこのエラーが追加されたことがわかる。

多分OpenSSLのバージョンの話だと思う。

試行錯誤

OpenSSLのバージョンを上げる

Mac OSに入っていたsslをそのまま使っていたのでHomebrew経由でインストールし、それを使用するようにPATHも通したが、ダメだった。。

urllib3のバージョンを下げる

当該issueを見ると、urllib3 2.0以上を使っててOpen SSL<1.1.1だとまずいみたいなことが書いてある(と思う)。

そこで上ではOpenSSLのバージョンを上げたつもりだったが、特にエラーは変わらなかった。

なので試しにurllib3のバージョンを下げてみた。

pip3 install 'urllib3<2.0'

(中略)

oj -h
usage: oj [-h] [-v] [-c COOKIE] [--version] {download,d,dl,login,l,submit,s,test,t,generate-output,g/o,generate-input,g/i,test-reactive,t/r,test-interactive,t/i} ...

Tools for online judge services

positional arguments:
  {download,d,dl,login,l,submit,s,test,t,generate-output,g/o,generate-input,g/i,test-reactive,t/r,test-interactive,t/i}
                        for details, see "/Users/masa/Library/Python/3.9/bin/oj COMMAND --help"
    download (d, dl)    download sample cases
    login (l)           login to a service
    submit (s)          submit your solution
    test (t)            test your code
    generate-output (g/o)
                        generate output files from input and reference implementation
    generate-input (g/i)
                        generate input files from given generator
    test-reactive (t/r, test-interactive, t/i)
                        test for interactive problem

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose
  -c COOKIE, --cookie COOKIE
                        path to cookie. (default: /Users/masa/Library/Application Support/online-judge-tools/cookie.jar)
  --version             print the online-judge-tools version number

tips:
  The official tutorial exists on the web: https://github.com/online-judge-tools/oj/blob/master/docs/getting-started.md

あれ、できたぞ?

できた

OpenSSLのバージョンを上げてもダメだった理由がよくわかってないので、解説してくれる人がいたら嬉しいです。