PyCharm 不建议自动完成并标记未解决的参考

PyCharm doesn't suggest autocompletion and marks unresolved reference

我正在尝试制作一个简单的 scapy 程序,但 PyCharm 不建议任何代码完成并标记 'unresolved reference'。但是,该程序有效。

我在 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()