ubuntu上にpython環境を作って動作確認した時に何故か日本語の部分でエラーが出たのでその時に行ったことメモ
macOS High Sierra 10.13
#ubuntu on docker
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
とりあえずpythonをインストールしてみて動作確認したらエラー発生。。どうも日本語が読めないっぽい。。
hoge.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
aaa = "あいうえお"
print(aaa)
python hoge.py
Traceback (most recent call last):
File "aa2.py", line 7, in <module>
print ('\u3053\u308c\u3067\u65e5\u672c\u8a9e\u3082\u6253\u3066\u307e\u3059')
File "/root/.pyenv/versions/3.6.3/lib/python3.6/codecs.py", line 377, in write
self.stream.write(data)
TypeError: write() argument must be str, not bytes
色々調べていると日本語環境がどうも入っていないような気がしたので日本語環境を構築してみた。
echo $LANG
何も表示されなかったので、多分これが原因と思い日本語環境にしてみた。
apt-get install language-pack-ja-base language-pack-ja
locale-gen ja_JP.UTF-8
echo export LANG=ja_JP.UTF-8 >> ~/.profile
source ~/.profile
echo $LANG
ja_JP.UTF-8
python hoge.py
あいうえお
オッケー。ちゃんと表示されました。
これに行き着くまでに色々やったことがあるので合わせてメモしておきます。
最初はソースの文字コードが違うと思っていたのでその辺りから調べていた。調べるためにnkfをインストール。
apt-get install nkf
cat hoge.py | nkf --guess
#utf-8に変換
nkf -w --overwrite hoge.py
文字コードとかホント嫌い。
Ubuntuに日本語localeを設定する
http://www.dreamedge.net/archives/111
nkfで文字コード変換
https://qiita.com/kentakozuka/items/d874a572ddf6cc34213f