为什么pylint找不到这个包的模块?

2024-10-01 13:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用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输出

尽管这是完全有效的,并且运行/导入没有错误,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)]

Tags: 模块文件pathfrompyimportappvenv
1条回答
网友
1楼 · 发布于 2024-10-01 13:44:48

您使用的Pylint版本(尚未)不支持^{} for creating namespaces。你使用的pylint/astroid的版本是什么?在

请参阅https://github.com/PyCQA/pylint/issues/687以了解类似问题,并链接到支持此命名空间创建的代码。在

请记住,Pylint在分析期间实际上并不运行Python代码,因此大多数非标准(不可推断)构造都必须通过编写自定义代码来支持。在

相关问题 更多 >