【发布时间】:2018-10-24 04:45:02
【问题描述】:
正如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.'
例如,如果您在具有非 ASCII 路径的文件夹中创建 virtualenv,就会发生这种情况:创建了许多带有破坏脚本的 shebang 的脚本。
我能想出的唯一解决方法是将文件夹符号链接到一些纯 ASCII 路径。然后可以将 shebang 路径更改为 ASCII 路径。或者在 virtualenv 的情况下从符号链接路径初始化它。
但是,如果路径的非 ASCII 部分是用户的主路径并且用户没有管理访问权限,则无法执行此操作。所以我想问:对于这种情况还有其他解决方法,希望更干净吗?例如。一些默认的文件编码设置或环境变量,如果 Python 没有找到魔术注释,它会使用吗?
【问题讨论】:
标签: python python-2.7 non-ascii-characters