【env】Sublime配置Pytho
- 2020 年 1 月 2 日
- 筆記
新建編譯環境
在sublime菜單欄中Tools
=> Build System
=> New Build System...
,輸入一下內容並保存為 Python3.sublime-build
。
{ "cmd": ["/usr/local/bin/python3", "-u", "$file"], "file_regex": "^[ ]*File "(...*?)", line ([0-9]*)", "selector": "source.python", "env": { "LANG": "en_US.UTF-8" // 如果不指定編碼,會出現print('中文')亂碼 } // 編碼指定utf-8方法2: // "env" : { // "PYTHONIOENCODING": "utf8" // } }
其中 /usr/local/bin/python3
為python的具體路徑,可通過 which python3
獲得。
Anaconda插件
插件簡介
實用的python插件,用多項類似IDE的功能:
-
Autocompletion
程式碼自動完成 -
Code Linting
程式碼語法、格式檢查 -
Goto Definitions
查找顯示變數、函數、類的定義 -
Find Usages
查找變數、函數、類的實用 - ……
插件功能詳見 anaconda文檔
安裝
通過 Package Control
搜索 anaconda
安裝
配置
{ // Python主文件位置 "python_interpreter": "/usr/local/bin/python3", // 語法格式檢查 <= (僅在保存時檢查,避免coding過程中一直出現警告框) "anaconda_linting": true, "anaconda_linting_behaviour": "save-only", // 保存時檢查 "anaconda_gutter_theme": "hard", "anaconda_linter_show_errors_on_save": false, // 保存時顯示錯誤 "anaconda_linter_phantoms": true, // 介面顯示錯誤 // pep8自動格式化 "auto_formatting": true, "pep8_ignore": [ "E501", ], // 文檔顯示設置 "enable_docstrings_tooltip": true, // 顯示文檔 "enable_signatures_tooltip": true, //在懸浮窗中顯示方法簽名 "display_signatures": true, //顯示方法簽名 "merge_signatures_and_doc": true }
解決模組名無法正常補全
問題
ST3當檢測到一些單詞(如: class、def、import等
)時取消了python包的自動補全。
解決方法
在 Preferences/Browser Packages
打開 Packages
目錄,新建 Python
目錄,新建 Completion Rules.tmPreferences
文件並輸入以下內容,然後重啟ST3。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>scope</key> <string>source.python</string> <key>settings</key> <dict> <key>cancelCompletion</key> <string>^(.*b(and|or)$)|(s*(pass|return|and|or|(class|def)s*[a-zA-Z_0-9]+)$)</string> </dict> </dict> </plist>
Unicode編碼問題
問題
UnicodeEncodeError: 'ascii' codec can't encode characters in position 294-302: ordinal not in range(128)
原因
sublime控制台ASCII 編碼無法對 unicode
的中文進行編碼,編譯環境容需要指定編碼。
解決方法
在 Python3.sublime-build
中指定編碼:
{ "env": { "LANG": "en_US.UTF-8" # 如果不指定編碼,會出現print('中文')亂碼 } } # 或者 { "env" : { "PYTHONIOENCODING": "utf8" } }