簡體   English   中英

Python 腳本在 Sublime Text 中運行時不起作用,但在命令行中運行

[英]Python script doesn't work when run in Sublime Text, but works from command line

我有一個非常簡單的腳本,它只讀入一個文件,當我從 Sublime Text 中運行它時,它現在以某種方式工作,但當我從命令行調用 Python 時工作正常。 我想知道為什么?

似乎在 open() 中,在一種情況下默認編碼是 utf-8,但在另一種情況下不是。 為什么會這樣? Python 可執行文件對於兩者都是相同的,並且兩者似乎在路徑中具有相同的核心 Python 庫。

腳本:

import sys
print(sys.executable)
print(sys.path)
open('foo.txt').read()
print('Life is wonderful.')

激活 virtualenv 后從命令行運行時為 Output:

/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.

從 Sublime Text 3 運行時為 Output:

/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 環境變量。

例如:

{
    "env": {"LANG":"en_US.UTF-8"},
    "cmd": ["env/bin/python3", "$file"],
    "selector": "source.python",
    "file_regex": "^\\s*File \"(...*?)\", line ([0-9]*)"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM