почему линии волнистых линий ошибки pylint не отображаются в коде визуальной студии python?

я использую vscode для python3 в Ubuntu. Линии с закорючками перестали работать для Python (работает и для других языков). И я использую расширение Microsoft Python.
vscode v1.41.1 Ubuntu v18.04

это то, что я пробовал:

  • Я подумал, может быть, это потому, что я установил анаконду, поэтому удалил ее, но не исправил.
  • затем я переустановил код vs после удаления его конфигурации из .config/code, но это тоже не сработало.
  • также установите для python linting значение true из палитры команд

он не показывает строки с волнистыми линиями ошибок: мой vscode выглядит так:

вот вклад расширения Microsoft python в отношении линтинга (извините за плохую читабельность):

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: пилинт

все ошибки в консоли 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

вывод для python в панели output:

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

как заставить волнистые линии снова работать?


person Manik    schedule 14.01.2020    source источник
comment
Что вы используете в качестве линтера? Он установлен?   -  person Boris    schedule 15.01.2020
comment
@Boris Борис, у меня есть расширение Microsoft Python ms-python.python. он говорит, что сам выполняет анализ, отладку и т. д.   -  person Manik    schedule 16.01.2020
comment
Я понятия не имею, но кому-то может помочь, если вы опубликуете вывод последних двух вещей, о которых они просят, здесь github.com/microsoft/vscode-python/issues/ Вывод для Python на панели Output и вывод для Console на панели Developer Tools   -  person Boris    schedule 18.01.2020
comment
@Boris, я добавил то, что вы просили. но я добавил только сообщения об ошибках в консоли в инструментах разработчика.   -  person Manik    schedule 18.01.2020


Ответы (5)


В вашем файле settings.json (ищите settings.json в палитре команд) объявите следующее:

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

если вы просто хотите внести изменения в свою рабочую область, измените файл settings.json в папке .vscode

В последней версии кода Visual Studio рабочая область не регистрирует настройки из флажков, поэтому вам необходимо явно указать в settings.json, какие настройки вы хотите включить для своей рабочей области. На Flake8 это не влияет. Pylint и Microsoft Python Language Server, похоже, не работают из-за этого.

примечание: получил это решение из ответа sys-temd на github.com/ Microsoft/vscode-python/проблемы

person Manik    schedule 20.01.2020
comment
Логические записи JSON должны быть в нижнем регистре, т.е. "python.linting.pylintEnabled": true - person smcs; 11.09.2020

Убедитесь, что в настройках вы не отключили linting (и, в частности, Pylint, если это то, что вы хотите использовать). Также убедитесь, что у вас установлен Pylint и расширение Python знает, где оно находится (либо создав среду и установив ее, либо установив ее глобально и установив "python.linting.pylintPath"). В противном случае проверьте вывод канала «Python» на панели вывода, чтобы увидеть, как выполняется Pylint, и убедитесь, что он работает, когда вы копируете и вставляете его в терминал соответствующим образом.

person Brett Cannon    schedule 15.01.2020
comment
python.linting.pylintPath установлен на pylint. я попробовал $ which pylint, он сказал, что pylint не найден. поэтому я установил его с помощью sudo apt-get install pylint, он установил pylint, а which pylint вернул путь. но строки с закорючками по-прежнему не отображаются (я перезагрузил vscode несколько раз) - person Manik; 16.01.2020
comment
Укажите абсолютный путь к pylint, а не только имя команды. - person Brett Cannon; 21.01.2020
comment
проблема была решена, я разместил решение. пришлось добавить "python.linting.pylintEnabled":True в settings.json файл - person Manik; 21.01.2020

pip install -U pylint

Решил мою проблему

person quasipolynomial    schedule 30.12.2020

Если основная проблема заключается в этих волнистых линиях или незначительных ошибках в рабочей области, вы можете загрузить «расширение pylance» и включить его в настройках «языкового сервера Python». Этот языковой сервер даже лучше (я думаю), потому что он легче, чем языковой сервер «джедаев», а также сообщает о неиспользуемых модулях и переменных или даже о неопределенных переменных, как показывают эти волнистые линии.

person Vaibhav Vishwakarma    schedule 13.04.2021

Что я пробовал, но не работает

  1. pip install -U pylint
  2. объявить "python.linting.pylintEnabled": true, "python.jediEnabled": false

Затем я пытаюсь воссоздать совершенно новый settings.json, pylint работает.

Поэтому я отслеживаю, какая строка влияет на pylint.

В моем случае это строка, начинающаяся с "python.linting.pylintArgs":

Решение

Удаление строки, начинающейся с "python.linting.pylintArgs":, решит проблему.

person Lucien    schedule 12.07.2021