簡體   English   中英

為什么pylint 的錯誤波浪線沒有顯示在python Visual Studio 代碼中?

[英]why are pylint's error squiggle lines not showing in python visual studio code?

我在 Ubuntu 中為 python3 使用 vscode。 錯誤波浪線已停止為 Python 工作(它適用於其他語言)。 我正在使用 Microsoft 的 Python 擴展。
vscode v1.41.1 Ubuntu v18.04

這是我嘗試過的:

  • 我想也許是因為我安裝了 anaconda,所以卸載了它但沒有修復它。
  • 然后我從.config/code刪除了它的配置后重新安裝了 vs .config/code但這也不起作用。
  • 還從命令面板將 python linting 設置為 true

它沒有顯示錯誤波浪線: 我的 vscode 看起來像這樣:

這是 Microsoft 的 python 擴展對 linting 的貢獻(抱歉可讀性差):

Whether to lint Python files.   true python.linting.flake8Args  Arguments passed in. Each argument is a separate item in the array.  python.linting.flake8CategorySeverity.E    Severity of Flake8 message type 'E'.    Error python.linting.flake8CategorySeverity.F   Severity of Flake8 message type 'F'.    Error python.linting.flake8CategorySeverity.W   Severity of Flake8 message type 'W'.    Warning python.linting.flake8Enabled    Whether to lint Python files using flake8   false python.linting.flake8Path Path to flake8, you can use a custom version of flake8 by modifying this setting to include the full path.  flake8 python.linting.ignorePatterns    Patterns used to exclude files or folders from being linted.    .vscode/*.py,**/site-packages/**/*.py python.linting.lintOnSave Whether to lint Python files when saved.    true python.linting.maxNumberOfProblems Controls the maximum number of problems produced by the server. 100 python.linting.banditArgs   Arguments passed in. Each argument is a separate item in the array.  python.linting.banditEnabled   Whether to lint Python files using bandit.  false python.linting.banditPath Path to bandit, you can use a custom version of bandit by modifying this setting to include the full path.  bandit python.linting.mypyArgs  Arguments passed in. Each argument is a separate item in the array. --ignore-missing-imports,--follow-imports=silent,--show-column-numbers python.linting.mypyCategorySeverity.error    Severity of Mypy message type 'Error'.  Error python.linting.mypyCategorySeverity.note  Severity of Mypy message type 'Note'.   Information python.linting.mypyEnabled  Whether to lint Python files using mypy.    false python.linting.mypyPath   Path to mypy, you can use a custom version of mypy by modifying this setting to include the full path.  mypy python.linting.pycodestyleArgs Arguments passed in. Each argument is a separate item in the array.  python.linting.pycodestyleCategorySeverity.E   Severity of pycodestyle message type 'E'.   Error python.linting.pycodestyleCategorySeverity.W  Severity of pycodestyle message type 'W'.   Warning python.linting.pycodestyleEnabled   Whether to lint Python files using pycodestyle  false python.linting.pycodestylePath    Path to pycodestyle, you can use a custom version of pycodestyle by modifying this setting to include the full path.    pycodestyle python.linting.prospectorArgs   Arguments passed in. Each argument is a separate item in the array.  python.linting.prospectorEnabled   Whether to lint Python files using prospector.  false python.linting.prospectorPath Path to Prospector, you can use a custom version of prospector by modifying this setting to include the full path.  prospector python.linting.pydocstyleArgs    Arguments passed in. Each argument is a separate item in the array.  python.linting.pydocstyleEnabled   Whether to lint Python files using pydocstyle   false python.linting.pydocstylePath Path to pydocstyle, you can use a custom version of pydocstyle by modifying this setting to include the full path.  pydocstyle python.linting.pylamaArgs    Arguments passed in. Each argument is a separate item in the array.  python.linting.pylamaEnabled   Whether to lint Python files using pylama.  false python.linting.pylamaPath Path to pylama, you can use a custom version of pylama by modifying this setting to include the full path.  pylama python.linting.pylintArgs    Arguments passed in. Each argument is a separate item in the array.  python.linting.pylintCategorySeverity.convention   Severity of Pylint message type 'Convention/C'. Information python.linting.pylintCategorySeverity.error Severity of Pylint message type 'Error/E'.  Error python.linting.pylintCategorySeverity.fatal   Severity of Pylint message type 'Fatal/F'.  Error python.linting.pylintCategorySeverity.refactor    Severity of Pylint message type 'Refactor/R'.   Hint python.linting.pylintCategorySeverity.warning  Severity of Pylint message type 'Warning/W'.    Warning python.linting.pylintEnabled    Whether to lint Python files using pylint.  true python.linting.pylintPath  Path to Pylint, you can use a custom version of pylint by modifying this setting to include the full path.  pylint python.linting.pylintUseMinimalCheckers  Whether to run Pylint with minimal set of rules.    true

python.linting.pylintEnabled 是:true

python.linting.pylintPath 是:pylint

Visual Studio 的開發人員工具控制台中的所有錯誤:

console.ts:137 [Extension Host] Error Python Extension: 2020-01-18 18:35:53: Failed to serialize gatherRules for DATASCIENCE.SETTINGS [TypeError: Cannot convert object to primitive value  at Array.join (<anonymous>) at Array.toString (<anonymous>) at /home/manik/.vscode/extensions/ms-python.python-2020.1.58038/out/client/extension.js:1:12901 at Array.forEach (<anonymous>)  at Object.l [as sendTelemetryEvent] (/home/manik/.vscode/extensions/ms-python.python-2020.1.58038/out/client/extension.js:1:12818)  at C.sendSettingsTelemetry (/home/manik/.vscode/extensions/ms-python.python-2020.1.58038/out/client/extension.js:75:707093) at C.r.value (/home/manik/.vscode/extensions/ms-python.python-2020.1.58038/out/client/extension.js:1:87512) at Timeout._onTimeout (/home/manik/.vscode/extensions/ms-python.python-2020.1.58038/out/client/extension.js:1:86031)    at listOnTimeout (internal/timers.js:531:17)    at processTimers (internal/timers.js:475:7)]
t.log @ console.ts:137
2console.ts:137 [Extension Host] Notification handler 'textDocument/publishDiagnostics' failed with message: Cannot read property 'connected' of undefined
t.log @ console.ts:137
2console.ts:137 [Extension Host] (node:21707) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
t.log @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
_doInvokeHandler @ rpcProtocol.ts:398
_invokeHandler @ rpcProtocol.ts:383
_receiveRequest @ rpcProtocol.ts:299
_receiveOneMessage @ rpcProtocol.ts:226
(anonymous) @ rpcProtocol.ts:101
fire @ event.ts:581
fire @ ipc.net.ts:453
_receiveMessage @ ipc.net.ts:733
(anonymous) @ ipc.net.ts:592
fire @ event.ts:581
acceptChunk @ ipc.net.ts:239
(anonymous) @ ipc.net.ts:200
t @ ipc.net.ts:28
emit @ events.js:200
addChunk @ _stream_readable.js:294
readableAddChunk @ _stream_readable.js:275
Readable.push @ _stream_readable.js:210
onStreamRead @ internal/stream_base_commons.js:166

output面板中pythonoutput

User belongs to experiment group 'AlwaysDisplayTestExplorer - control'
User belongs to experiment group 'ShowPlayIcon - start'
User belongs to experiment group 'ShowExtensionSurveyPrompt - enabled'
User belongs to experiment group 'DebugAdapterFactory - experiment'
User belongs to experiment group 'AA_testing - experiment'
> conda --version
> pyenv root
> python3.7 -c "import sys;print(sys.executable)"
> python3.6 -c "import sys;print(sys.executable)"
> python3 -c "import sys;print(sys.executable)"
> python2 -c "import sys;print(sys.executable)"
> python -c "import sys;print(sys.executable)"
> /usr/bin/python3.8 -c "import sys;print(sys.executable)"
> conda info --json
> conda env list
Starting Microsoft Python language server.
> conda --version
> /usr/bin/python3.8 ~/.vscode/extensions/ms-python.python-2020.1.58038/pythonFiles/interpreterInfo.py
> /usr/bin/python3.8 ~/.vscode/extensions/ms-python.python-2020.1.58038/pythonFiles/interpreterInfo.py

如何讓波浪線再次工作?

settings.json文件中(在命令面板中搜索settings.json ),聲明以下內容:

"python.linting.pylintEnabled": true, "python.jediEnabled": false

如果你只是想在你的工作空間的變化,然后改變settings.json文件.vscode文件夾

在最新版本的 Visual Studio 代碼中,工作區不會從復選框注冊設置,因此您必須在 settings.json 中明確聲明要為工作區啟用的設置。 Flake8 不受此影響。 因此,Pylint 和 Microsoft Python 語言服務器似乎無法正常工作。

旁注:從 sys-temd 在github.com/microsoft/vscode-python/issues上的回復中得到這個解決方案

我試過但沒有用

  1. pip install -U pylint
  2. 聲明"python.linting.pylintEnabled": true, "python.jediEnabled": false

然后我嘗試重新創建一個全新的 settings.json,結果 pylint 工作正常。

因此,我會追蹤哪條線會影響 pylint。

就我而言,它是從"python.linting.pylintArgs":開始的行"python.linting.pylintArgs":

解決方案

刪除從"python.linting.pylintArgs":行將解決問題。

確保在您的設置中您沒有關閉 linting(如果您想使用它,特別是 Pylint)。 還要確保您安裝了 Pylint 並且 Python 擴展知道它在哪里(通過創建環境並安裝到那里或全局安裝並設置"python.linting.pylintPath" )。 否則,請檢查輸出面板中“Python”通道的輸出,以查看 Pylint 的執行方式,並確保在您將其適當地復制並粘貼到終端中時可以正常工作。

pip install -U pylint

解決了我的問題

如果主要問題是工作區中的那些波浪線或一些小錯誤,那么您可以下載“pylance 擴展”並在“python 語言服務器”的設置中啟用它。 這個語言服務器甚至更好(我認為),因為它比“絕地”語言服務器更輕,並且還告訴了未使用的模塊和變量甚至未定義的變量,如那些波浪線所示。

暫無
暫無

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

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