Python PyCharm:与Scapy的未解析引用
我正在使用scapy编写一个用python编写的网络工具。Python PyCharm:与Scapy的未解析引用,python,ide,pycharm,scapy,Python,Ide,Pycharm,Scapy,我正在使用scapy编写一个用python编写的网络工具。 作为IDE,我正在使用Pycharm。 我的代码有效。因此,如果我运行它,一切都会按预期运行 我的问题是PyCharm给了我一些错误。 它标记了IP、TCP、Ether、。。。作为未定义的引用… 我的代码的相关部分如下所示 #!/usr/bin/env python from scapy.all import * ... ... syn = IP(src=src_ip, dst=dst_ip) / TCP(sport=src
作为IDE,我正在使用Pycharm。
我的代码有效。因此,如果我运行它,一切都会按预期运行 我的问题是PyCharm给了我一些错误。
它标记了
IP
、TCP
、Ether
、。。。作为未定义的引用…
我的代码的相关部分如下所示
#!/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")
...
我尝试了很多我用谷歌找到的东西,比如把我的src文件夹添加为源根目录,我刷新了我能找到的所有缓存,并重新启动了PyCharm几十次,但都没有效果
由于代码可以正常工作,这只是一个小问题,但我仍然希望IDE能够按预期工作
我在MacOS下工作,我使用的是虚拟环境有同样的问题,请尝试以这种方式导入:
from scapy.layers.inet import IP, UDP, wrpcap, Ether
这对我很有效。这是一个问题。Scapy使用(使用
importlib
)加载pycharm未检测到的许多模块/自定义模块。这允许用户选择要加载的层
解决方法是从相关的scapy文件中导入所需内容,而不使用all
。它更干净,但要做的时间更长。或者,如果您不想寻找干净的东西,也可以在IDE中使用“添加异常”
下面是一些有用的模块
您可以从中获取IP、TCPscapy.layers.inet
scapy.layers.inet6
scapy.layers.dns
有srp、sr、sr1、sendp、sendscapy.sendrecv
直接访问scapy的插槽scapy.supersocket
其中包含以太、ARPscapy.layers.l2
用于802.11内容scapy.layers.dot11
用于scapy.utils
,wrpcap
rdpcap
对象的conf
(具有scapy.config
或conf.route
等属性)conf.route6
我建议您打开Scapy shell(或在控制台中从Scapy.all import*导入
),并使用帮助(…)
检查层/函数来自哪个模块。你也可以在上面查看在线API参考(它有一个搜索栏)你在使用虚拟环境吗?哦,忘了提这个了。。。是的,我使用的是VirtualVare您配置pycharm来使用virtualenv吗?是的,pycharm将virtualenv配置为“解释器”,我通过pycharm安装了所有需要的数据包,而不是通过virtualenv中的pip。我遇到了同样的问题。这里有什么解决办法吗?