![](/img/trans.png)
[英]Formatter Black not working for my VScode Jupyter Notebooks?
[英]Formatter black is not working on my VSCode...but why?
我已經開始使用 Python 和 Django,我是這個領域的新手。 這是我第一次在這里提問...如果有已知的解決方案,我會提前道歉...
當我安裝並設置 VSCode 格式化程序“black”(將 linter 設置為 flake8 之后)時,教程視頻導師端顯示彈出窗口,如“未安裝格式化程序 autopep8”。 安裝?'。 & Mine 沒有顯示該消息。
所以我所做的是...
底部代碼來自 settings.json(在 vscode 文件夾中)。
{
"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true,
"python.linting.enabled": true,
"python.formatting.provider": "black", # input manually
"python.linting.flake8Args": ["--max-line-length=88"] # input manually
}
我找到了一個“黑色格式化程序”文檔。 https://github.com/psf/black & 它聲明... python -m black {source_file_or_directory} & 我收到以下錯誤消息。
Usage: __main__.py [OPTIONS] [SRC]...
Try '__main__.py -h' for help.
Error: Invalid value for '[SRC]...': Path '{source_file_or_directory}' does not exist.
是的,老實說,我不確定我應該設置哪個 source_file_or_directory...但最重要的是現在我擔心我是否在正確的軌道上。
我能聽聽你的建議嗎? 請至少指示 go。 謝謝..
我在 VSCode 內部使用黑色,它很震撼。 它釋放了您決定如何格式化代碼的心理周期。 最好從您最喜歡的編輯器中使用它。 如果您需要一次格式化大量文件,只需從命令行運行。
首先,檢查你的 VSCode settings.json
中是否有這個。json(使用 Ctrl-P + 設置打開它):
"python.formatting.provider": "black",
"editor.formatOnSave": true,
請記住,可能有 2 個 setting.json 文件:一個在您的主目錄中,一個在您的項目中( .vscode/settings.json
)。 項目內部的占上風。
也就是說,這類問題通常與使用未安裝黑色的 python 解釋器有關。 我推薦使用虛擬環境,但首先在狀態欄上檢查你的 python 解釋器:
如果您沒有明確地 select 解釋器,請現在單擊狀態欄中的 Python 版本。 用於出現在項目設置文件中的選定路徑:
"python.pythonPath": "Scripts\\python.exe",
但我認為它不再出現了。
現在打開終端。 由於您選擇了解釋器,因此 VSCode 應該會自動激活您的虛擬環境。 使用您的解釋器路徑運行 python 並嘗試導入黑色:
$ python
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import black
>>>
導入失敗? 問題解決了。 只需使用 venv 的解釋器安裝 black: python -m pip install black
。
還是行不通? 單擊終端的“輸出”選項卡兄弟並嘗試在“日志”output 中獲取更多信息。 Select 它在下拉菜單中:
附上我對那些仍然無法解決 vs code 中“黑色”格式問題的人的發現。
首先,您必須在全局或本地安裝 black(如果您使用 conda 之類的虛擬環境)
然后,確保您的 vs 設置如下,將 python 默認格式化程序提供程序設置為“黑色”:
最后,打開你的vs代碼的settings.json,為其添加以下段。
"[python]": {
"editor.defaultFormatter": null,
"editor.insertSpaces": true,
"editor.tabSize": 4,
"editor.formatOnSave": true
}
關鍵點是:
"editor.defaultFormatter": null
如果您仍然使用"editor.defaultFormatter": "black"作為許多舊帖子,則 'black' 格式化程序將無法在較新的 vs 代碼中工作。
對於那些已經嘗試過的人:)。
如果您有黑色將無法在 VSCode 中使用
%matplotlib inline
)。從文件上的終端運行黑色顯示了這些問題。
就像 camab 說的,你完全可以從命令行運行它:
$ black file.py
您還可以在 python 文件的整個文件夾(目錄)上運行它:
例如,如果我有:
src/
| - module/
| | - moduleFile.py
| \ - __init__.py
|
\ - script.py
並運行
$ black src
它將格式化moduleFile.py
、 __init__.py
和script.py
。
就您的 VSCode 配置而言,我也喜歡在settings.json
{
"editor.formatOnSave": true,
"python.linting.lintOnSave": true,
}
以確保每次我按下保存時,文件都會被整理和格式化。
如果您在 VSCode 中遇到了 linting/formatting 問題,您可以使用“命令面板”(Ctrl+Shift+P)強制執行以下命令:
如果確實存在問題,這應該會產生視覺彈出樣式錯誤。
希望這對編碼有所幫助和快樂!
我有同樣的問題,唯一的治療方法是移除
"python.formatting.blackArgs": ["--skip-numeric-underscore-normalization"],
從設置.json。 這沒有意義,但它有效。
如果您使用的是 windows 操作系統,那么有一個最簡單的解決方案:
AppData/python/scripts
上"Appdata/path/scripts;"
希望現在黑色在每次保存時都能正常工作。
這個解決方案對我來說很好。
注意:現在您可以在 CLI 中使用黑色。
對我來說,問題不是直接黑色,而是它讀取以查找配置設置的無效項目設置文件。 根本原因沒有記錄在任何地方。
我通過檢查OUTPUT
選項卡並選擇了Python
擴展名找到了原因。 它顯示黑色被調用,顯然沒有報告任何問題:
./.venv/bin/python -m black --diff --quiet ./myfile.py
cwd: .
但是,當我在終端中運行相同的命令時,我收到了錯誤報告:
Error: Could not open file './pyproject.toml': Error reading configuration file: Invalid value (at line 18, column 10)
修復此問題后,我可以手動格式化我的代碼,並且format on save
時的格式也回來了。
有一個新的擴展,目前是預發布的,用於格式化黑色。 請參閱v1.67 發行說明,Python 黑色格式。
來自自述文件( vscode Marketplace:Black Formatter ):
在 Visual Studio Code 中安裝后,“Black Formatter”將可用作 python 文件的格式化程序。 請將 select “黑色格式化程序”(擴展 id:ms-python.black-formatter)作為默認格式化程序。 您可以使用上下文菜單(在編輯器中右鍵單擊打開的 python 文件)和 select“使用...格式化文檔”來執行此操作,或者您可以將以下內容添加到您的設置中:
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
您可以通過在設置中具有以下值來啟用 python 的保存格式:
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true
}
從 vs 代碼運行時black
可能會停止工作的另一個原因......
也許您已經開始使用 Python 3.10
如果使用結構模式匹配等新功能,黑色將失敗。 VS Code 靜默失敗。 沒有格式化發生。 看起來black
不起作用。
嘗試從命令行運行black
以查看是否有錯誤消息。
這就是我得到的:
$ black my_code.py
error: cannot format my_code.py: Cannot parse: 57:14: match rec.split():
Consider using --target-version py310 to parse Python 3.10 code.
Oh no! 💥 💔 💥
1 file failed to reformat.
我必須將--target-version=py310
添加到 VS Code 的blackArgs
中,如下所示:
"python.formatting.blackArgs": ["--target-version=py310"]
請注意等號 (=)。
這個問題對我的黑人沒有任何幫助。 我放棄了並將設置> UI中的默認格式化程序切換為autopep8,一切正常。
可能您與默認格式化程序有沖突,只需將"[python]": { "editor.defaultFormatter": null }
添加到 VSC 中的Open User Settings
。
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"python.formatting.provider": "black",
"[python]": { "editor.defaultFormatter": null }
如果你在開發容器上工作,那么你可能需要安裝 Black Formatter 擴展。 它對我有用,這是鏈接:
https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter
另一種可能性是語法錯誤阻止了 Black 的工作。 如果存在語法錯誤,黑色將不會應用任何格式更改。
但是,VS Code 仍然在狀態欄中顯示“Formatting with Black”並默默地失敗。
您可以通過從命令行運行 Black 來驗證這一點,如果有錯誤,它將顯示錯誤:
$ black foo.py
error: cannot format foo.py: Cannot parse: 328:4: :
Oh no! 💥 💔 💥
1 file failed to reformat.
在我看來,使用黑色的最好方法是通過終端。 您需要做的就是將其安裝在終端上的 pip 上,使用: pip install black 然后在安裝 go 到終端上並輸入:黑色文件名。
整行將是: black filepath/file.py 因此,對於位於桌面上的名為 test.py 的文件,如果在 mac 上:black desktop/test.py 如果您想對多個文件執行此操作,而不是對每個文件單獨執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.