AtCoderのコンテストに参加した。本当はいろいろ勉強して次の土曜日に受ける予定だったのだが、ちょうど昨日16日にABCが開催されるので勢いで参加。
言語はPython。結果はA、B問題の二問解けてC問題の途中で時間切れ。初参加なのと今の自分の実力を考えればまずまずの結果。できればC問題まで解答したかった。
さて、ここから本題。
今回の記事ではPyCharmのインタープリタをAtCoderで使われているPython3.4.3に設定する方法を書く。
はじめに
AtCoderではPython3.4.3が使われている。時間制限のあるコンテスト中にバージョン違いによるエラーが起こってしまうのは避けたい。自分のつかっているIDEでもPython3.4.3にそろえておきたい。
有名なところでは最大公約数を求めるgcd関数。Python3.4以前ではfractionsモジュールにあったが、3.5以降ではmathになっているため、IDE側でmath.gcdで書いて、Atcoderに提出するとエラーになってしまう。
PyCharm公式によるとPython3.4以下はサポート対象外なのだそうだ。
サポートされるバージョン
Python 2 : バージョン2.7
Python 3 : バージョン3.5からバージョン3.8まで
from https://pleiades.io/help/pycharm/python.html
インタープリターにPython3.4.3を設定すると赤字で[unsupported]と表示され、いかにも使えないように見える。しかし結論から言うと設定してしまえばバージョン3.4以下でも使える。会社としてはサポート対象外だが使う分には勝手に使ってねということなんだと思う。
まずはPython3.4.3をインストール
PyCharmで仮想環境を作る際にBase InterpreterにPython3.4.3を指定する。そのためPython3.4.3をローカル環境にインストールしておく必要がある。
- Python公式ページからPython3.4.3をダウンロードする。
https://www.python.org/downloads/
OSなど自分の環境にあったものを一覧から選ぶ。 - フォルダを指定してインストール
自分のわかりやすいところにインストール。
私はcドライブ直下に「PythonOldVersion」というフォルダを作ってそこにPythonの各バージョンをつっこんでいる。
標準的な管理方法があるんでしょうか?わかる方いらしたら教えてください。
このとき、環境変数などを書き換えないように注意。あくまでAtCoder用の仮想環境で使っていくものなのでシステムにインストールしてあるPythonのバージョンは今のままにしておく。
PyCharmにPython3.4.3を使った仮想環境を作る
- FileからNew Projectを選んで新しくプロジェクトを作る
PyCharmで標準的なやり方であるVirtualenvで仮想環境を作る。そのBase InterpreterにPython3.4.3を指定する。 - Base Interpreter欄の右にある「…」ボタンをクリック。
先ほどインストールしたPython3.4.3のフォルダからpython.exeファイルを選択。
これでPython3.4.3がインタープリターとして設定された。
- 既存のプロジェクトの場合は、ファイル→SettingsからProject:(プロジェクト名)のProject Interpreterを選択。
画面右側の歯車マークをクリックしてAdd …を選択。
そうすると1.の画面が出てくるので同じように操作する。
警告が出てくるので出てこないように設定する
サポート外のバージョンが使われているので画面上部に警告が表示されるようになる。
右側の歯車マークをクリック。
Edit inspection profile settingをクリック。
「invalid interpreter configured」がすでにハイライトされているのでチェックを外す。
設定をもとに戻す場合は次のページを参考してください。

確認
ターミナルからPythonのバージョン確認
ターミナルからpython –vertionコマンドでバージョンの確認。
「Python 3.4.3」と表示されていればOK。
最小公約数を求める関数gcdで確認してみた
念のためやってみた。
最小公約数を求める関数gcdは3.4ならfractionsモジュール、3.5以降ならmathモジュールにある。fractions.gcdで動作し、math.gcdでエラーになるか確認してみた。
import math import fractions a = 6 b = 4 print(fractions.gcd(a, b)) print(math.gcd(a, b))
実行結果
fractions.gcdで実行できて、math.gcdではアトリビュートエラーになっている。
これでAtCoderのコンパイラと環境をそろえられた。
追記:numpy入れられない・・・
競プロに有用そうなパッケージ、numpyがPycharm+Python3.4.3だとインストールでエラーが発生して入れられない・・・。ほかのパッケージはどうかと思ってpytestを入れてみたら、それに付随するパッケージも含めてインストールできた。
numpyを入れる方法を知っている方いたら情報ください。
コメント