首页 > 解决方案 > PyCharm 不建议自动完成并标记未解决的引用

问题描述

我正在尝试制作一个简单的 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+ spacePyCharm 不建议show(),summary()和其他类似的方法。

标签: pythonpycharmscapy

解决方案


您对此无能为力:/

(有关更完整的答案,请参阅https://stackoverflow.com/a/53402404/5459467 )

Scapy动态加载其层模块。它允许 Scapy 用户分别切换每个层的加载,但 IDE 将无法检测到导入。

解决此问题的方法是直接从其特定文件导入图层,而不是Scapy.all.

例如:

from scapy.layers.l2 import ARP
from scapy.sendrecv import sniff

尽管需要更多时间,但它更干净(因为您不会导入所有内容)。如果你不知道哪个模块是一个层,就help()在 Scapy 的 shell 中。


推荐阅读