web-dev-qa-db-fra.com

Pylint: "Problème lors de l'importation du module ....: impossible d'importer le nom 'Type'"

Chaque exécution de pylint (quel que soit le programme vérifié) génère le message d'erreur suivant:

(env) $ pylint hello.py 
Problem importing module logging.py: cannot import name 'Type'
Problem importing module spelling.py: cannot import name 'Type'
Problem importing module python3.py: cannot import name 'Type'
Problem importing module typecheck.py: cannot import name 'Type'
Problem importing module variables.py: cannot import name 'Type'
Problem importing module refactoring.py: cannot import name 'Type'
Problem importing module format.py: cannot import name 'Type'
Problem importing module imports.py: cannot import name 'Type'
Problem importing module utils.py: cannot import name 'Type'
Problem importing module newstyle.py: cannot import name 'Type'
Problem importing module exceptions.py: cannot import name 'Type'
Problem importing module classes.py: cannot import name 'Type'
Problem importing module stdlib.py: cannot import name 'Type'
Problem importing module async.py: cannot import name 'Type'
Problem importing module design_analysis.py: cannot import name 'Type'
Problem importing module base.py: cannot import name 'Type'
Problem importing module strings.py: cannot import name 'Type'
Traceback (most recent call last):
  File "/Users/brunorijsman/python-logging-performance/env/bin/pylint", line 11, in <module>
    sys.exit(run_pylint())
  File "/Users/brunorijsman/python-logging-performance/env/lib/python3.5/site-packages/pylint/__init__.py", line 20, in run_pylint
    Run(sys.argv[1:])
  File "/Users/brunorijsman/python-logging-performance/env/lib/python3.5/site-packages/pylint/lint.py", line 1557, in __init__
    linter.enable("c-extension-no-member")
  File "/Users/brunorijsman/python-logging-performance/env/lib/python3.5/site-packages/pylint/utils.py", line 323, in enable
    msgid, enable=True, scope=scope, line=line, ignore_unknown=ignore_unknown
  File "/Users/brunorijsman/python-logging-performance/env/lib/python3.5/site-packages/pylint/utils.py", line 366, in _set_msg_status
    msg = self.msgs_store.get_message_definition(msgid)
  File "/Users/brunorijsman/python-logging-performance/env/lib/python3.5/site-packages/pylint/utils.py", line 989, in get_message_definition
    msgid_or_symbol=msgid_or_symbol
pylint.exceptions.UnknownMessageError: No such message id c-extension-no-member

Dans ce cas particulier, je vérifiais le programme trivial suivant hello.py:

print("Hello")

Mais le problème se produit également lorsque je ne vérifie pas un programme, par exemple. pylint --version

Pylint fonctionne dans un environnement virtuel que j'ai créé comme suit:

$ python3 -m virtualenv env
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.5'
New python executable in /Users/brunorijsman/python-logging-performance/env/bin/python3
Also creating executable in /Users/brunorijsman/python-logging-performance/env/bin/python
Installing setuptools, pip, wheel...done.
$ source env/bin/activate
(env) $

(Remarque: je me rends compte que le module venv est recommandé par rapport à virtualenv de nos jours, mais j'ai des problèmes différents avec venv sur macOS, comme décrit dans "installation par le pip" échoue pour chaque package ("Impossible de trouver une version qui réponde à l'exigence") )

J'ai installé pylint dans l'environnement virtuel comme suit:

(env) $ pip install pylint
Collecting pylint
  Using cached https://files.pythonhosted.org/packages/a5/06/ecef826f319055e6b231716730d7f9047dd7524ffda224b521d989f085b6/pylint-2.2.2-py3-none-any.whl
Collecting isort>=4.2.5 (from pylint)
  Using cached https://files.pythonhosted.org/packages/1f/2c/22eee714d7199ae0464beda6ad5fedec8fee6a2f7ffd1e8f1840928fe318/isort-4.3.4-py3-none-any.whl
Collecting astroid>=2.0.0 (from pylint)
  Using cached https://files.pythonhosted.org/packages/fc/53/8809bc008bad0300897281a7b320b286dc0e84e836396c0cff6279841e8a/astroid-2.1.0-py3-none-any.whl
Collecting mccabe (from pylint)
  Using cached https://files.pythonhosted.org/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl
Collecting typed-ast; python_version < "3.7" and implementation_name == "cpython" (from astroid>=2.0.0->pylint)
Collecting wrapt (from astroid>=2.0.0->pylint)
Collecting six (from astroid>=2.0.0->pylint)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting lazy-object-proxy (from astroid>=2.0.0->pylint)
Installing collected packages: isort, typed-ast, wrapt, six, lazy-object-proxy, astroid, mccabe, pylint
Successfully installed astroid-2.1.0 isort-4.3.4 lazy-object-proxy-1.3.1 mccabe-0.6.1 pylint-2.2.2 six-1.11.0 typed-ast-1.1.0 wrapt-1.10.11

Informations de version:

Le système d'exploitation est macOS High Sierra 10.13.6

(env) $ python --version
Python 3.5.1
5
Bruno Rijsman

Il semble que votre version de python compatible avec pylint spécifique et astroïde. Python 3.5 est livré avec sa propre version du typage, qui a été ajoutée avant l'introduction de typing.Type. Donc, cela pourrait résoudre le problème:

pip install astroid==1.5.3 pylint==1.8.2

Ce problème s'est produit avec Python 3.5 

https://github.com/PyCQA/pylint/issues/1216

https://github.com/python/mypy/issues/1838

0
i_th