いつの頃か、zsh で日本語のディレクトリに移動すると、下記のようなエラーが出るようになりました。

Traceback (most recent call last):
  File "/Users/hoge/.vim/bundle/powerline/scripts/powerline-render", line 28, in <module>
    finish_args(args)
  File "/Users/hoge/.vim/bundle/powerline/powerline/shell.py", line 83, in finish_args
    args.renderer_arg = mergeargs((parsedotval(v) for v in args.renderer_arg))
  File "/Users/hoge/.vim/bundle/powerline/powerline/shell.py", line 13, in mergeargs
    for subval in argvalue:
  File "/Users/hoge/.vim/bundle/powerline/powerline/shell.py", line 83, in <genexpr>
    args.renderer_arg = mergeargs((parsedotval(v) for v in args.renderer_arg))
  File "/Users/hoge/.vim/bundle/powerline/powerline/lib/__init__.py", line 98, in parsedotval
    o, val = keyvaluesplit(s)
  File "/Users/hoge/.vim/bundle/powerline/powerline/lib/__init__.py", line 78, in keyvaluesplit
    if '=' not in s:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 31: ordinal not in range(128)
Traceback (most recent call last):

Powerline の GitHubの サイトで Issue を見ても、それらしいものはなかったので、環境の問題かなと思っていたら、Python のデフォルトエンコードの問題にたどり着きました。

デフォルトエンコーディングを変更する方法は、下記のとおりです。

作業手順

site-package ディレクトリに移動

私の環境では、下記のパスにありましたが、適宜自分の環境に読み替えてください。

/usr/local/lib/python2.7/site-packages

sitecustomize.py を作成(編集)

sitecustomize.py を作成します。私の環境ではすでにファイルがありましたので、リネームしました。

sitecustomize.py には、下記の内容を入力します。

import sys
sys.setdefaultencoding("utf-8")

エンコードの確認

下記のとおり入力し、utf-8 と表示されればOKです。

$ python
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

これで zsh で日本語のディレクトリに移動してもエラーが表示されなくなります。

私は Python を開発で使っていないため、他にどんな影響があるかわかりませんので、検討した上で実施してください。

参考

PythonのデフォルトエンコーディングをUTF-8に変更する。 - タチコマ好きなエンジニアのブログ