Pylint:“问题导入模块..:无法导入名称'类型'”

时间:2018-12-07 16:40:36

标签: python python-3.x macos pip virtualenv

每次运行pylint(无论检查了什么程序)都会产生以下错误消息:

(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

在这种情况下,我正在检查以下普通程序hello.py

print("Hello")

但是当我不检查程序时,例如pylint --version

Pylint在我创建如下的虚拟环境中运行:

$ 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) $

(注意:我意识到现在建议在virtualenv上使用venv模块,但是我对'pip install' fails for every package ("Could not find a version that satisfies the requirement")中所述的macOS上的venv有不同的疑问)

我将pylint安装到虚拟环境中,如下所示:

(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

版本信息:

操作系统为macOS High Sierra 10.13.6

(env) $ python --version
Python 3.5.1

1 个答案:

答案 0 :(得分:0)

看来您的python版本与特定的pylint和astroid兼容。 Python 3.5带有其自己的键入类型,该类型在引入type.Type之前添加。因此,这可能会解决问题:

const hmac = crypto.createHmac('sha256', decoded_key); hmac.write(hash_data); hmac.end(); let encoded_hash = hmac.read().toString('base64');

此问题发生在python 3.5

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

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