【发布时间】:2017-03-28 21:25:53
【问题描述】:
我目前正在使用 pylint,当我对单个文件进行 lint 时出现错误(下面的重现)。我正在使用 azure sdk,但这只是我引用的包,在这里应该不重要。
复制
$ mkdir pylinttesting && cd pylinttesting
$ python3 -m venv venv
$ . venv/bin/activate
$ pip3 install azure==2.0.0rc6
$ echo 'from azure import mgmt' > app.py
运行此脚本文件不会导致任何问题 (python3 app.py)
pylint 输出
即使这是完全有效的并且运行/导入没有错误,pylint 仍然抱怨它。下面的相关输出(为简洁起见)...
E: 1, 0: No name 'mgmt' in module 'azure' (no-name-in-module)
External dependencies
---------------------
::
azure (app)
但是!如果我运行这个小sn-p(在同一个虚拟环境中)......
import os
import pkgutil
import azure
package_path = os.path.dirname(azure.__file__)
[print(name) for _, name, _ in pkgutil.iter_modules([package_path])]
...我得到以下输出...
batch
common
mgmt
servicebus
servicemanagement
storage
显然mgmt 模块存在于azure 包中。但我想知道为什么 pylint 不接受它?
另外值得注意的是,如果我这样做from azure import common(common 是包中的另一个模块),pylint 不会抛出错误。
对于为什么 pylint 可能对包中的这个 mgmt 模块不满意有什么想法吗?
EDIT:pylint 版本信息...
pylint 1.6.5,
astroid 1.4.9
Python 3.6.0 (default, Dec 24 2016, 00:01:50)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
【问题讨论】: