Python実行環境構築メモ[Vagrant+Ansible+vscode]
※自分用メモ
AtCoder用のPython実行環境を作る + サンプルのテストの自動化する。
ローカルにpyenvで古いpythonインストールが楽なんだけどイマイチちゃんと動かなかった。
要件
- AtCoderのPythonにバージョンを合わせた実行環境を構築
- ローカルのmacosには古いpythonはインストールしない (3.4.3)
- Visual Studio Codeを使えるようにする
- 各問題のサンプルはコマンド一発でテストできるようにする
手順
vagrantのVM作成
Vagrantファイル抜粋
config.vm.define "vag2" do |node| node.vm.box = "generic/ubuntu1804" node.vm.hostname = "Vag2" node.vm.network :private_network, ip: "192.168.33.12" node.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] vb.customize ["modifyvm", :id, "--cpus", "1"] vb.customize ["modifyvm", :id, "--ioapic", "on"] end node.vm.synced_folder "./syncdir", "/vagrant", create: true, owner: "vagrant", group: "vagrant" node.vbguest.auto_update = false end
メモ
- boxは
generic/ubuntu1804
とbento/centos-7.7
で確認済み vagrant ssh
ではなくターミナルからsshコマンドで接続する- ディレクトリ同期する(local:./syncdir to vm:/vagrant)
pythonインストール
Ansible実行。pyenvでpythonとライブラリをインストール
sample問題取得
下記ツールをローカルで使用する。超便利。
同期しているディレクトリをworkspaceにして実行
atcoder-tools gen abc148 --lang python --workspace ~/vag_test/syncdir/atcoder
テスト用シェルもコピーしておく
cp -p /path/to/atcoder-python-role/test.sh ~/vag_test/syncdir/atcoder/.
vscodeでVagrantのVMに接続
上記extensionを使用
コード書いてテスト
- 各問題のディレクトリのmain.pyにコードを記載 (Ex:
/vagrant/atcoder/abc148/A/main.py
) - テストシェル実行
cd /vagrant/atcoder/ && ./test.sh abc148 A
まとめ
職業柄環境構築や自動化のほうが捗る(過去問解け)