Как говорит PEP 263 , Python 2 (в частности, 2.7 в моем случае) требует волшебной строки комментария для указания кодировки файла:
# -*- coding: utf-8 -*-
Без этого невозможновключить не-ASCII символы в файл.Возникает печально известная ошибка:
SyntaxError: Non-ASCII character '[…]' in file […] on line […], but no encoding declared; see http://python.org/dev/peps/pep-0263/
Однако, если не-ASCII-символ находится в пути интерпретатора shebang, магический комментарий не работает:
#!/Users/naïve/project/python2.7
# -*- coding: utf-8 -*-
print 'Hello.'
Это происходит, например,если вы создаете virtualenv
в папке с путем, отличным от ASCII: создается много сценариев с шебангом, который нарушает сценарий.
Единственный обходной путь, который я могу придумать, состоит в том, чтобы связать папку с некоторымиASCII-единственный путь.Тогда можно изменить путь Шебанга на ASCII.Или в случае virtualenv
для инициализации его из пути с символьной связью.
Однако это невозможно сделать, если не-ASCII-часть пути является домашним путем пользователя и у пользователя нет доступа администратора.Поэтому я хотел бы спросить: есть ли другой выход из этой ситуации, надеюсь, более чистый?Например, какой-либо параметр кодировки файла по умолчанию или переменная среды, которую Python будет использовать, если не найдет магический комментарий?