- Published on
UnicodeEncodeError when running python scripts in Atom.io
何?
Atom の script-plugin で python 実行時に sys.stdout の encoding が US-ASCII になっていたので,print()
などでUnicodeEncodeError
が出る.
どうする?
__init__.py
などで stdout の encoding を変更する.
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
- Atom.app から起動時には,環境変数をログインシェルから読むみたいなので,例えば
.bash_profile
にexport LANG='en_US.UTF-8'
などと書いておく.
経緯
python3.4 を pyenv global で設定していたのに,atom の script-plugin では OSX の python2.7.9 が使われるのはなんでだろう,と思っていた. 普段は iterm2 で zsh を起動するようにしていたので,ログインシェル(bash)の設定ファイルへ環境を反映していなかったのが原因だった.