我有一个非常简单的脚本,它只读取一个文件,当我从Sublime文本中运行它时,它现在可以工作了,但是当我从命令行调用Python时,它工作得很好。我想知道为什么
似乎在open()中,一种情况下的默认编码是utf-8,而在另一种情况下则不是。为什么会这样?Python可执行文件对于这两个文件都是相同的,并且在路径中似乎都有相同的核心Python库
脚本:
import sys
print(sys.executable)
print(sys.path)
open('foo.txt').read()
print('Life is wonderful.')
激活virtualenv后从命令行运行时的输出:
/Users/bemmu/Dropbox/b2/babynames/env/bin/python3
['/Users/bemmu/Dropbox/b2/babynames', '/Users/bemmu/Dropbox/b2/babynames', '/Users/bemmu/b2/python_include_dir', '/Library/Python/2.5/site-packages/elementtree-1.2.7_20070827_preview-py2.5.egg', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Users/bemmu/Dropbox/b2/babynames/env/lib/python3.6/site-packages', '/Users/bemmu/Dropbox/b2/babynames/env/lib/python3.6/site-packages/fasttext-0.9.2-py3.6-macosx-10.6-intel.egg']
Life is wonderful.
从升华文本3运行时的输出:
/Users/bemmu/Dropbox/b2/babynames/env/bin/python3
['/Users/bemmu/Dropbox/b2/babynames', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Users/bemmu/Dropbox/b2/babynames/env/lib/python3.6/site-packages', '/Users/bemmu/Dropbox/b2/babynames/env/lib/python3.6/site-packages/fasttext-0.9.2-py3.6-macosx-10.6-intel.egg']
Traceback (most recent call last):
File "/Users/bemmu/Dropbox/b2/babynames/foo.py", line 4, in <module>
open('foo.txt').read()
File "/usr/local/bin/../../../Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
[Finished in 0.0s with exit code 1]
[cmd: ['env/bin/python3', '/Users/bemmu/Dropbox/b2/babynames/foo.py']]
[dir: /Users/bemmu/Dropbox/b2/babynames]
[path: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin:/usr/local/go/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/git/bin]
构建系统:
{
"cmd": ["env/bin/python3", "$file"],
"selector": "source.python",
"file_regex": "^\\s*File \"(...*?)\", line ([0-9]*)"
}
您需要在构建系统中设置LANG环境变量
例如:
相关问题 更多 >
编程相关推荐