Posted at

python2からpython3に対応させる時に詰まった事


はじめに

python2からpython3に環境を切り替えたのですが、色々と詰まった部分があったのでここに記載しておきます。


詰まった部分


1. pipが異なる

当たり前ですが…

linux系でやっているとpipがpython2でpip3がpython3に紐付いています。

必要なモジュールはpip3でインストールし直しましょう。

pip install xxxx  # <-X

pip3 install xxxx # <-O


2. 対応しないモジュールがある

例えばSimpleHTTPServerではなくhttp.serverなどになっています。

まぁ実行時に怒られるので分かると思いますが…

ちなみにSimpleHTTPServerの以降につては、http.server内に似たクラスがありますので、そちらを利用すれば簡単に移管できます。


3. bytes型の登場

これまで利用していたモジュールで文字列を返した関数が、これになっている例が多いです。

こんな感じで、文字コード指定して文字列に直してあげましょう

# x = bytes型

x.decode('utf-8')


4. エラー発生時の変数Exceptionmessageが利用できない

これは見逃すとエラー発生時のみしか発生しないバグを含んでしまうので、気をつけてください。


最後に

他にも色々とあるかと思いますが…

ご指摘やご意見ある方はコメント部分にください。

ありがとうございました。