あれも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. それと比べて特徴は何か?

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

PythonでRubyOnRailsライクなwebアプリ開発を行いたい(ruPy on rails)を使う

20160402追記:モチのロンですが、エイプリルフールネタでした(せめてレポジトリは用意すれば良かった・・・ 来年はもっと頑張ろうと思います

Pythonでは強力なwebアプリケーションフレームワークとしてDjango,Tornadoが存在します。
特にDjangoMVC(Django的にはMTV)に基づき、強力なORM機能を持つなど、
Railsに負けないフルスタックながら、スピーディな開発が可能になっています。

しかし、どうも知名度がよろしくない・・・。
というところを改善するためのコマーシャルモジュールとして、
Salvano Klavineという方がつくった
ruPy on railsというモジュールが存在します。

はじめ方

pipで入ります。
Djangoが依存モジュールなため、
一緒にインストールされます。

pip install rupy

使い方

rupy startproject プロジェクト名

でプロジェクトが作成されます。

基本的には、Djangoのラッパーでしかないので、
特にDjangoと変わりません_

Djangoとの大きな違いは

  • projectとapplicationの区別が存在しない
  • staticディレクトとindex.htmlが事前に作成される

くらいでしょうか。

特にあんまりメリットは感じません。
操作感はRailsに近くなっているので、
Railsには親しみあるけど、Rubyは別に・・・
という層を取り込むのが目的なんでしょうか。

ちなみに

このindex.htmlが曲者で、
表示すると

USE PYTHON!の文字とともに、
zen of pythonの内容が表示されます。

このあたりツールに振り回されることなく、
ちゃんと設計思想を気にする
Pythonistaらしいジョークです。
(おもしろいかは知りません)

とりあえず、よくわからない言語宗教戦争に巻き込まれたら、
おすすめしてみましょう。

Herokuを久々に使用する

今度の勉強会に向けて、
tornadoをherokuで動かすテストをしていた。

久々ぶりなので、
herokuでところどころひっかかったので備忘録

1. buildpackの設定

herokuは使用する言語を自動で判断してくれるのだけれど、
何を間違ったかPythonではなく、PHPになってしまった。

その状態でpushしようとしてもエラーになる。
対策は手動でbuildpackを変える。

heroku buildpacks:set heroku/python

2.必要なファイルの名前を間違える

herokuはお作法として、
動かすのに幾つか必須のファイルがある。
Pythonの場合は

  • Procfile
  • requirements.txt

の2つは必須。

requirement.txtと、sが抜けてて、
しばらくアプリケーションエラーが起きていた。
※ちなみにログを見たい場合は、

heroku logs

3. ProcfileにIPアドレスを書いていた

ローカルでgunicornを動かしていたコマンドを
そのままProcfileにコピペしたので、
IPが書かれていたのでエラーになった。

当たり前っちゃ、当たり前。

4. MongoLabでdb名を誤っていた

DBとしてMongoLabというアドオンを使おうと思ったのだけど、
どうもエラーがでる。
と思ったら、MongoLabはdb名まで自動で決まってしまい、
指定できるのはcollectionからだった。
db名を指定されたものに変えたら無事通った。