当我有一个无成员错误时,我的代码 运行 怎么能完美呢?

How can my code run perfectly, when i have a no-member error in it?

我一直在研究 Scapy python 库。我的目标是使用 Scapy 中内置的 arping() 函数查看我的本地网络上有哪些主机。我不明白的部分是:虽然 VSCode 给我这个错误信息:"Module 'scapy.all' has no 'arping' member" 代码仍然运行得很好,我在终端中得到了预期的结果,没有任何问题。

我想了解此错误消息背后的原因是什么,如果 python 说它找不到 arping,程序怎么可能还在运行?

我的确切代码 运行:

import scapy.all as scapy


def scan(ip):
    scapy.arping(ip)

scan('192.168.0.0/24')

此行为表明 IntelliSense 引擎使用的 python 环境不同于您所在的 运行 代码本身的 python 环境。

尝试 changing your VS Code python interpreter/environment to match the python environment where you will be executing the code (see the environment docs 了解更多详情)

我遇到了这个问题,我发现它是误报,让我解释一下

首先,你将scapy.all导入为scapy,即all.py文件,这个文件里面导入了很多python文件,但是没有arping() 函数在里面,这就是为什么 VS 代码说 'scapy.all' 没有 'arping' 成员

另一方面,你会发现 arping() 函数是在 scapy 下的层文件夹中名为 l2.py 的文件中定义的 >>

/usr/lib/python2.7/dist-packages/scapy/layers/l2.py

此图层文件夹及其 python 文件(包括 l2.py)被导入到 all.py 文件中

所以函数不是直接导入的,而是导入的,

这就是为什么它是误报,您不必担心,

如果你想摆脱这个错误,你可以做 >> import scapy.layers.l2 as scapy

但我不推荐它,因为您只会导入那个 l2.py 文件,而不会导入所有 scapy 函数和方法