我目前正在使用pylint,当我lint单个文件时遇到一个错误(下面是repro)。我使用的是azuresdk,但这只是我引用的包,这在这里应该不重要。在
$ 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仍然抱怨它。以下是相关输出(为简洁起见,请删减。。。在
^{pr2}$但是!如果我运行这个小片段(在同一个虚拟环境中)。。。在
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
包中。但我想知道为什么派林特不接电话?在
值得注意的是,如果我做from azure import common
(common是包中的另一个模块),pylint不会抛出错误。在
对于为什么pylint可能对包中的这个mgmt
模块不满意有什么想法吗?在
编辑:p打印版本信息。。。在
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)]
您使用的Pylint版本(尚未)不支持^{} for creating namespaces 。你使用的pylint/astroid的版本是什么?在
请参阅https://github.com/PyCQA/pylint/issues/687以了解类似问题,并链接到支持此命名空间创建的代码。在
请记住,Pylint在分析期间实际上并不运行Python代码,因此大多数非标准(不可推断)构造都必须通过编写自定义代码来支持。在
相关问题 更多 >
编程相关推荐