这个问题在这里已有答案:
我正在尝试制作一个简单的scapy程序,但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()
和其他方法。
你不能做太多反对:/
Scapy loads its layer modules dynamically。它允许Scapy用户单独切换每个层的加载,但IDE将无法检测导入。
你可以做些什么来解决这个问题,直接从他们的特定文件导入图层,而不是Scapy.all
。
例如:
from scapy.layers.l2 import ARP
from scapy.sendrecv import sniff
即使它需要更多时间,它也更清洁(因为你不会导入所有东西)。如果你不知道哪个模块是一个图层,只需要在Scapy的shell中使用help()
。