環境
- MacでPython3系、virtualenvを使ってライブラリを切り替えてる
-
VisualStudio側の設定
拡張機能: Python
workspace設定:
setting.json
"python.pythonPath"="~/.virtualenvs/[virtualenv名]/bin/python"
問題発生・・・
macのターミナルで実行する分には全く問題はないが、VisualStudio側の Run Python File in Terminal
で実行した場合は日本語のコメントやらなんやらが入るとUnicodeEncodeError・・・
もちろんMacでのターミナルでは実行できているのでVisualStudioのPython実行ターミナル側の問題というのはわかった。
解決?
とりあえず、
hogehoge.py
import sys
print(sys.stdout.encoding)
を実行したところ、Mac側ターミナルでは「utf-8」、VisualStudioでは「US-ASCII」が表示。なんじゃそりゃ。
なので、標準出力のエンコーディング変更を先ほどエラーになってたファイルに追加してみたら、ちゃんと実行可能。
とはいえ、毎回記入するのは面倒なので、sitecustomize.pyファイルを作成することに。どうせvirtualenvだし、いらなくなったら消せば良いよねー、というわけで以下のファイルを作成、virtualenvで指定しているsite-packages配下に配置。
sitecustomize.py
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
無事、ターミナル上だけでなく、VisualStudioCodeのターミナルでも日本語が使えるようになりましたとさ。
Python実行の拡張機能で設定している部分での設定で本来はいじる部分だとは思うので、見つけたら更新します。(力つきるかもしれませんが。)