電波ビーチ

☆(ゝω・)v

【conda】仮想環境のPythonのバージョンを上げる

あらすじ

そういえばAtCoderの言語アップデートに伴いPython3の仕様が変わっているようだ。最近はGoでやってるし、自分の知識は3.5あたりで止まっているので取り急ぎdiffを読んだりした。(なおGoのアップデートに関しては書く予定はない)

競プロに直結する(ため、しばしば待望の機能だと目されている)gcdとか。個人的にはgcdってスニペットにすら用意してなくて毎回フルスクラッチで書いてるんで気にしたこと無いけど

kabukimining.hateblo.jp

個人的には3.6.xから文字埋め込みがformatを使わずに済むようになった、というのが目を引く。デバッグするときよく使っていたのだが

realpython.com

以前のバージョンが3.4.3で、condaで管理しているAtCoder用の仮想環境のバージョンもそれに合わせていた。この機会にアップデートする。結論からいえば対象の環境にインストールするだけで終わった

対象の仮想環境

(base) h4l:~ hal$ conda activate 4atcoder
(4atcoder) h4l:~ hal$ python3 --version
Python 3.4.3 :: Continuum Analytics, Inc.

これをアプデする。

方法

思いついた方法はいくつかあって、

  • conda cloneする
  • 現行環境でrequiements.txtを吐き出して新しくconda create

がまっさきに浮かんだが、よくよく考えればconda installで依存関係が解決されるので、単純にこれでいけそうなのでそれでいくことにした。むしろこっちのほうを思いつけ。なぜまわりくどい方法を取ろうとするのだ...

condaで対象の仮想環境に任意のバージョンのpythonを入れる

ということでconda install -n <env name> python=<>

(base) h4l:~ hal$ conda install -n 4atcoder python=3.8.2
Collecting package metadata (repodata.json): done
Solving environment: done

....


The following packages will be UPDATED:

  ....
  python                          pkgs/free::python-3.4.3-2 --> pkgs/main::python-3.8.2-hc70fcce_0
  ....

よさそうですね

確認

さっきと同じ手順でアクティベートして確認するだけです。わくわく

(4atcoder) h4l:~ hal$ python3 --version
Python 3.8.2

🎉

verify

記事の最初に個人的に気になってたf-string記法を使えば文字列内に式を埋め込めるので、例えばABC166 - Aはこのようにかけて便利だね

print(f"{'ABC' if input() == 'ARC' else 'ARC'}")

f-stringについてはこちらを参照。 note.nkmk.me

ところで

今日(2020/05/04 JST)現在、過去問ではまだ言語アップデートがされていないのでつらい