PyCharm:Scapy 未解决的引用

PyCharm: Unresolved reference with Scapy

我正在使用 scapy 在 python 中编写网络工具。
作为 IDE 我正在使用 Pycharm.
我的代码有效。因此,如果我 运行 它,一切都会按预期进行。

我的问题是 PyCharm 给我一些错误。
它将 IPTCPEther、... 的每次使用标记为 Undefined Reference to ...

我代码的相关部分如下所示

#!/usr/bin/env python
from scapy.all import *

...  
...  

syn = IP(src=src_ip, dst=dst_ip) / TCP(sport=src_port, dport=dst_port, seq=src_seq, flags="S")

...

我尝试了很多使用 google 发现的东西,比如将我的 src 文件夹添加为源根目录,我刷新了所有我能找到的缓存并重新启动 PyCharm 数十次,但没有任何效果.. .

由于代码有效,所以这是一个小问题,但我仍然希望我的 IDE 按预期工作

我在 MacOS 下工作并使用虚拟环境

有同样的问题,尝试这样导入:

from scapy.layers.inet import IP, UDP, wrpcap, Ether

对我有用。

这是一个 PyCharm 问题。 Scapy 使用 dynamic loading(使用 importlib)加载许多模块/自定义模块,pycharm 未检测到。这允许用户 select 他们想要加载的图层。

解决方法是从他们的相关 scapy 文件中导入您需要的任何内容,而不使用 all。它更干净但需要更长的时间。或者你可以在你的 IDE 中使用“添加例外”,如果你不是在寻找干净的东西。

这里有几个有用的模块

  • scapy.layers.inet 哪里可以获取IP、TCP..
  • scapy.layers.inet6
  • scapy.layers.dns
  • scapy.sendrecv 有 srp、sr、sr1、sendp、send...
  • scapy.supersocket直接访问scapy的套接字
  • scapy.layers.l2 有以太币,ARP..
  • scapy.layers.dot11 用于 802.11 内容
  • scapy.utils 对于 wrpcaprdpcap...
  • scapy.config 对于 conf 对象(具有 conf.routeconf.route6 等属性)

我建议做的是打开 Scapy shell(或在控制台中导入 from scapy.all import *)并使用 [=27= 检查 layer/function 来自哪个模块].您还可以通过 here

查看在线 API 参考(它有一个搜索栏)