Запуск pylint возвращает ModuleNotFoundError: нет модуля с именем ' wrapt.обертки'


Я пытаюсь использовать код Visual Studio с pylint. Когда я загружаю любой файл .py, я получаю следующую ошибку в консоли вывода:

Linting with pylint failed.
You could either install the 'pylint' linter or turn it off in setings.json via "python.linting.pylintEnabled = false".
Error: Command failed: C:Users(...)AppDataLocalProgramsPythonPython36-32python.exe -m pylint --msg-template='{line},{column},{category},{msg_id}:{msg}' --reports=n --output-format=text c:Users(...)DesktopUntitled-1.py
Traceback (most recent call last):
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32librunpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32librunpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagespylint__main__.py", line 7, in <module>
    pylint.run_pylint()
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagespylint__init__.py", line 12, in run_pylint
    from pylint.lint import Run
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagespylintlint.py", line 43, in <module>
    import astroid
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagesastroid__init__.py", line 57, in <module>
    from astroid.nodes import *
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagesastroidnodes.py", line 30, in <module>
    from astroid.node_classes import (
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagesastroidnode_classes.py", line 26, in <module>
    from astroid import decorators
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packagesastroiddecorators.py", line 12, in <module>
    import wrapt
  File "C:Users(...)AppDataLocalProgramsPythonPython36-32libsite-packageswrapt__init__.py", line 4, in <module>
    from .wrappers import (ObjectProxy, CallableObjectProxy, FunctionWrapper,
ModuleNotFoundError: No module named 'wrapt.wrappers'

Это не относится к коду VS, я получаю тот же результат при выполнении этой команды из командной строки:

C:Users(...)AppDataLocalProgramsPythonPython36-32python.exe -m pylint --msg-template='{line},{column},{category},{msg_id}:{msg}' --reports=n --output-format=text c:Users(...)DesktopUntitled-1.py

Установлены зависимости Pylint:

PS C:Users(...)> & C:Users(...)AppDataLocalProgramsPythonPython36-32python.exe -m pip install pylint
Requirement already satisfied: pylint in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages
Requirement already satisfied: six in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from pylint)
Requirement already satisfied: colorama; sys_platform == "win32" in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from pylint)
Requirement already satisfied: isort>=4.2.5 in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from pylint)
Requirement already satisfied: mccabe in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from pylint)
Requirement already satisfied: astroid>=1.5.1 in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from pylint)
Requirement already satisfied: lazy-object-proxy in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from astroid>=1.5.1->pylint)
Requirement already satisfied: wrapt in c:users(...)appdatalocalprogramspythonpython36-32libsite-packages (from astroid>=1.5.1->pylint)

Python 3.6.3 32 бит на Win 10 64 бит. Путь Python задается в переменных окружения системы.

2 2

2 ответа:

У меня была такая же проблема, с похожей средой (win 10 64-bit, VSCode, Python 3.6.3). Я скачал все файлы из wrapt GitHub repo: https://github.com/GrahamDumpleton/wrapt/tree/master/src/wrapt затем я положил его в свою обернутую папку.

    C:\Users\(...)\AppData\Local\Programs\Python\Python36-32\lib\site-packages\wrapt\

Теперь мой Линтер работает.

Модуль wrapt был установлен неправильно, поэтому я удалил его. Переустановка не удалась, так как pip не смог обработать специальный символ в предупреждении MSVC. (Не знаю, как установка была зарегистрирована успешной в первую очередь).

Существует ошибка в обработке pip специальных символов в выводе консоли. В качестве обходного пути Я заменил строку 73 в \lib\site-packages\pip\compat\__init__.py

Откуда:

return s.decode(sys.__stdout__.encoding)

Кому:

return s.decode(sys.__stdout__.encoding, "replace")

И снова побежал python -m pip install pylint. На этот раз все получилось.