Столкнулся с проблемой декодирования sql-скрипта инициализации БД. Да, в нем есть русские буквы.
Причем, проблема появилась сегодня, когда клонировал проект в новую папку при работе в IDE Eclipse - PyDev (решил попробовать её использовать), хоть и установил для проекта ту же среду virtualenv.
На старом месте (в другой папке) проект (и соотв-нно django-treensl) работал нормально.
При попытке старта сервера вылетала ошибка:
... File "/Users/Evgeniy/virtual_envs/ve_py34_django18/lib/python3.4/site-packages/treensl/migrations/0001_initial.py", line 12, in load_stores_from_sql
ini_sql = open(os.path.join(treensl.__path__[0],'sql_scripts/ini_postgres.sql' ), 'r').read()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 3: ordinal not in range(128)
В файле treensl/migrations/0001_initial.py
было:
ini_sql = open(os.path.join(treensl.__path__[0],'sql_scripts/ini_postgres.sql' ), 'r').read()
Помогло добавление параметров декодирования. Стало:
ini_sql = open(os.path.join(treensl.__path__[0], 'sql_scripts/ini_postgres.sql'), 'r', newline='', encoding='utf-8').read()
Версию пакета в PyPi обновил. Теперь она уже 0.1.4
PS Что-то сложно всё в этом мире с кодировками :)
Updated 13 Oct. 2015, 22:10 by EvgIq.