全面的に見なおして3.Xでも動くようにしてみました。2.7でも引き続き使える様にPython2.XとPython3.Xの共存コードになっています。LinksPython2.XとPython3.Xの共存Pythonは2.Xと3.Xで非互換な変更があり、大体のスクリプトはどちらかでしか動きません。今回、Brew-fileではは取り敢えず現状のもので両方で使える様にしてみました。以下、今回行った変更点等。'print'な感じで怒られます。3.Xではprintは1print('aaa')の様に関数の形になっています。これによって大概のスクリプトは互換性を失います。print_functionを導入します。printは関数の形になります。(先の文の形は使えなくなる。)他にも__future__にはいくつか3.Xの動きを2.Xに取り入れるためのモジュールがあります。これは3.Xの機能、というわけではなく、2.5以前の物に対してwithを使える様にするためのモジュールです。xrangeは無い2.Xにあったxrangeは3.Xにはありません。これを使うことで値を遅延評価してメモリを一気に使うことを避けることが出来ます。非常に大きな範囲を使う時にはxrangeが大分高速だったりします。xrangeと同じような動作をするのでこれを使えば良し、と言うことに。xrangeを使ってる部分は全てrangeに置き換えて両方で使える様にしました。速度が気になる様なレベルで使っている場合にはちょっと考えないといけません。str(e)のようにasを使います。この方法は2.Xでも使えるのでこの様に変更。3.Xではそれぞれ、map、filterオブジェクトになります。listな感じのエラーが置きます。3]))とキャストしてあげればOK。(基本、2.Xのコードなら、mapやfilterの所を全てlistでキャストしてしまっても問題ないはず。キャストしておきます。3.Xではbytes型で帰ってくるのでこれをデコードしてやる必要があります。(というか2.Xではbytesはstrと同義だったのが別物になった。Python3の時にはそれぞれ.decode()してstrに変更します。b''が延々と続いて終わりません。素直に上のようにp.stdoutを取る方法で両方で使えます。(かなり適当ですが取り敢えず使える方法と使えない方法ということで。2.X用の物を試してダメなら3.X用の物を読みこむように。引数がunicodeになってstrを普通に入れようとするとエラーが出てしまいます。2.Xを先に入れると2.Xで使っていたコードがそのまま使えます。例外処理でやってるものが見た感じほとんどです。これだと3.Xとかでなくても、変更があった時点で切り替わるので便利なので。3.Xではurllib.requestにあります。HTTPErrorはurllib.errorに。HTTPErrorな感じにしておいて使います。