読者です 読者をやめる 読者になる 読者になる

あれもPython,これもPython

Pythonで世界を包みたい

Pythonモジュール調査環境について(2016/04現在)

Pythonを使う上で、実際に開発するのに使用している環境と、
調査するための環境は切り分けています。

特に自分の場合、ブログのための調査などもあり、
これは開発の合間に必要になってするリサーチとは結構違うと思います。

その辺の環境に関して今回は書きました。

何を使っているか

  • IPython
  • Vim
  • virutalenv

1.初期調査

webで今回使うモジュールについて簡単な初期調査をします。
依存モジュールは何か、どんな機能を持っているのかの簡単な調査です。
検索エンジンでちょっと検索するくらい。

2.検証用の環境をつくる

基本的にはデスクトップに検証用のディレクトリを作ります。
バージョン依存を破壊したり、挙動の怪しいモジュールを追加すると困るため、
専用の環境を作ります。

自分の場合はvirtualenvで仮想環境を作っています。

mkdir module_test
cd module_test

virutalenv env

source env/bin/activate

virtualenvを使っているのはディレクトリ単位の切り分けができるためです。
pyenvとかanacondaよりもそこは視覚的でよい。

3.いろいろ試してみる

先ほど作った環境に試したいモジュールなんかを入れて、いろいろ試します。
たいていは、1で調べた手順を一通り試す感じですね。

基本的にはIPythonを使用します。
IPythonを使う理由は

  • %pdbでデバッガーが使える
  • %timeなどで速度計測ができる
  • %runスクリプトが使える
  • !でシェルが使える

という感じで、作業の大半をターミナルで完結できるためです。

記録を残すのであれば、IPythonNotebookのほうが良いかもしれませんが、
なんだかんだ言って対話型で使い捨てでもいい場合が多いのでIPythonで満足しています。

特に、メモを作ったりスクリプトを書くなら、!vimvimを起動できるので、
今のところはこのままでいいかなあ、という感じです。
(vimpython,markdownチューンしてありますし)

またinspectモジュールを使うことで、
モジュールの中身なども見つつ、
いろいろ検証している感じです。

esu-ko.hatenablog.com

おまけ

ちなみにモジュールの整理をするときなんかは、
以下の質問にこたえるようにしています。

  1. そのモジュールのメイン機能は何か?
  2. 同様の機能を持つモジュールはあるか?
  3. 同種のモジュールと比べて、特徴は何か?
  4. メイン機能を補助するサブ機能は何か?
  5. サブ機能と同様の機能を持つモジュールはあるか?
  6. それと比べて特徴は何か?

これで大枠を押さえて、
プロセスの中で関数などを確認していく感じです。
特徴は比較軸になるので、後々生きてきますね。