EXE化(py2exe)について
会社で作ったスクリプトをEXE化した時に、どうしても2バイトが入るとエラーが出てたので、
なんでかと思ってたんですが、以下が参考になりました。
http://d.hatena.ne.jp/katz3/20080430/1210303100
ソースコードから実行する分には問題ないのに、exe化してから実行すると、
UnicodeEncodeError: 'ascii' codec can't encode characters in position ...
と出た。importで
import sys
sys.setdefaultencoding('cp932')
と書いたらexe化してもうまく動いた。exe化するときは必ずデフォルトエンコーディングの設定をソースコードに書いておいたほうがよさそう。
全部のソースに
#coding: utf-8 # -*- encoding: utf-8 -*- import sys, locale, codecs enc = locale.getpreferredencoding() sys.stdout = codecs.getwriter(enc)(sys.stdout) sys.stdin = codecs.getreader(enc)(sys.stdin)
って今かいてあるのを
#coding: utf-8 # -*- encoding: utf-8 -*- import sys, locale, codecs enc = locale.getpreferredencoding() sys.stdout = codecs.getwriter(enc)(sys.stdout) sys.stdin = codecs.getreader(enc)(sys.stdin) sys.setdefaultencoding(enc)
ってするといい感じかな?もうおまじない状態ではありますが。。。