Python2系メインで使っている社内PCにXonshを導入してみた
はじめに
この記事はXonsh Advent Calendar 2017 8日目の記事です。
社内PCにxonshを導入してみた話を書きます。
環境
- Windows7
- Python2.7.10
おっと、体調が少し悪くなってきました。
- Cygwin
- ConEmu
導入手順
Python3インストール
導入しようとしてびっくりしたんですがそもそもPython3入ってなかったですね。
普通にDLしてきて、
C:\Python36-32\
あたりにインストールC:\Python36-32\python.exe
をC:\Python36-32\python3.exe
にリネームC:\Python36-32
にPathを通す
これでとりあえずpython3コマンドが通るようになります。
これだとpipコマンドが使えないんですが、メインで使うのは今後もしばらく2系になりそうなのでとりあえずこういう感じにしておきます。
pipでxonshインストール
基本的な手順はここに書いてあるとおり。
$ python3 -m pip install xonsh $ python3 -m pip install prompt-toolkit
win_unicode_consoleもインストールしたほうがよさそうなこと書いてありますが、Cygwinで実行するぶんには特に必要なさそうな感じです。
ConEmuのタスクに登録
set CHERE_INVOKING=1 & %ConEmuDrive%\cygwin64\bin\bash.exe --login -i -new_console:C:${アイコンのパス} -c python3 -m xonsh
こんな感じで登録しておくと、ConEmuのタスクからXonshを選択して起動できます。
.xonshrcを作成
import _locale _locale._getdefaultlocale = (lambda *args: ['ja_JP', 'utf_8'])
とりあえずこれを追加しておかないと、Tabキーで補完しようとするたびにErrorを吐かれてしまいます。(参考:xonshのタブ補完でなんかエラーになる件 - Qiita)
あとは.bashrcと同様に何かしら登録しておくとよさそう。Pythonで書けるみたいで便利ですね。
やっていき
とりあえず思いついたことをやっていきます。
材料
何をしたいのか
train_script_py2.py
の学習時に与える最適なパラメータを考えたいので、とりあえず何パターンか試してみたい。- 結果をCSVに出力したい。
- そのためにまたPython2系のスクリプトを増やしたくない。
- 大人の事情などがありscipyのバージョンを軽率に上げられないため(????)、最新のpandasやscikit-learnが使えず残念な感じという問題もある。
動かしてみた
$ import pandas as pd $ from sklearn.metrics import accuracy_score $ params = pd.read_csv('params.csv') # vecsize, threshold, window $ scores = [] $ for i, (v, t, w) in params.iterrows(): python train_script_py2.py -i 'train_dataset.csv' -o 'tmp.model' \ --vecsize @(v) --threshold @(t) --window @(w) pred = [int(cls) for cls in $(python pred_script_py2.py \ -m @(model_path) -i 'test_dataset.csv').split('\n') if cls] scores.append(accuracy_score([0,1,2,3,4,5,6,7,8,9], pred)) $ params[score] = scores $ params.to_csv('result.csv', index=False)
動いた
動いたから何だという感じもあります。
所感
- ちょっとしたファイル操作等をするときにPythonも一緒に使えるbashだと思うとまあ結構アリかもしれない。
- しかし上でやってみたぐらいのことをやるならPython2でも良い気はします。
- シェル芸力が足りないのであんまり気の利いたことができなかったです。
- 様々な事情がありJavaのモジュールを使用することを余儀なくされたりなどするため、そういったときには便利なのかもしれません。
- SVN(Gitではない)のコマンドライン操作を絡めてモニョモニョできたりすると楽しいかもしれません。
- はやく3系*1になりたい
*1:にんげん