我正在尝试制作一个简单的程序,但PyCharm不建议任何代码完成,并标记了“未解决的参考”。该程序有效,但是。
我正在Mac OS 10.14和系统python解释器(/usr/local/bin/python3.7
)上使用最新版本的PyCharm。
from scapy.all import *
def arp_display(pkt):
pkt.summary()
if pkt[ARP].op == 1:
print("%s demande qui est %s" % (pkt[ARP].psrc, pkt[ARP].pdst))
elif pkt[ARP].opH == 2:
print("%s possède l'addresse %s" % (pkt[ARP].psrc, pkt[ARP].hwsrc))
sniff(prn=arp_display, filter="arp", store=0, count=10)
ARP
被标记为未解决的引用,当我输入pkt.
和ctrl
+ space
时,PyCharm不建议show()
,summary()
,以及其他应采用的方法。
答案 0 :(得分:2)
您不能为此做很多事情:/
Scapy loads its layer modules dynamically。它使Scapy用户可以分别切换每个图层的加载,但是IDE将无法检测到导入。
要解决此问题,您可以直接从图层的特定文件而不是Scapy.all
导入图层。
例如:
from scapy.layers.l2 import ARP
from scapy.sendrecv import sniff
即使花费更多时间,它也更干净(因为您不导入所有内容)。如果您不知道哪个模块是层,只需在Scapy的外壳中为其help()
。