export PYTHONIOENCODING=utf-8
выполняет задание, но не может установить его на самом python ...
то, что мы можем сделать, это проверить, не задано ли значение и сообщить пользователю установить его перед вызовом сценария с:
if __name__ == '__main__':
if (sys.stdout.encoding is None):
print >> sys.stderr, "please set python env PYTHONIOENCODING=UTF-8, example: export PYTHONIOENCODING=UTF-8, when write to stdout."
exit(1)
Обновить для ответа на комментарий: проблема существует только при переходе на стандартный вывод. Я тестировал в Fedora 25 Python 2.7.13
python --version
Python 2.7.13
cat b.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
print sys.stdout.encoding
работает ./b.py
UTF-8
работает ./b.py | меньше
None