Scapy.all导入*不起作用
所以,我在Ubuntu中为scapy写了一个小脚本。
#!/usr/bin/env python
import sys
#from scapy.all import *
try
import scapy
except ImportError:
del scapy
from scapy import all as scapy
i= IP()
t= TCP()
i.dst='192.168.56.100'
t.dport=22
pakket=i/t
answered,unanswered=sr(pakket)
answered.nsummary()
我写了'尝试'因为另一个话题在这里(尝试它作为一个解决方案)。 我的这个代码的当前输出如下
Traceback (most recent call last):
File "./scapy.py", line 5, in <module>
import scapy
File "/home/nicholas/scapy.py", line 9, in <module>
i=IP()
NameError: name 'IP' is not defined
当试图只从scapy.all进口*没有'尝试'。
Traceback (most recent call last):
File "./scapy.py", line 3, in <module>
from scapy.all import *
File "/home/nicholas/scapy.py", line 3, in <module>
from scapy.all import *
ImportError: No module named all
我尝试了在Google上找到的不同输入方式,但仍然无效。 任何人都可以告诉我我做错了什么? (不介意这篇文章的缩进)
从scapy源文件看,scapy软件包似乎不会import
任何东西或在__init__
定义__all__
。 因此,您需要明确import scapy.all
(或from scapy import all
),然后才能from scapy.all import
其他任何内容,因为它不会在sys.modules
。 请注意,这只会在程序流程中发生一次,因为在解释器导入模块后,它将适用于从此时开始执行的所有代码,而不管它在哪里。 查看模块中的Python文档以及如何import
并特别导入包,以了解更多详细信息。
编辑:我想我现在看到了问题,我只是注意到你的堆栈跟踪的错误部分。 很确定你在这里处理的是名称冲突。 你的文件被命名为scapy.py
,所以当你从该文件的上下文中import scapy
时,你实际上是将文件本身作为一个模块导入。 由于你的文件没有一个名为all
的子模块(它不能,因为它不是一个包),你会看到导入错误。 尝试将文件的名称切换为与您希望导入其中的任何包或模块不冲突的内容,然后查看该文件的效果是否更好。
顺便说一句,请注意你的堆栈跟踪你的导入实际上是递归地调用你的一个文件。 这应该是在进口过程中出现问题的线索。
相当旧的帖子。 对于那些仍在寻找的人来说,使用当前版本的正确导入将是:
from scapy.all import *
当我在当前目录中有一个scapy.py
时,我看到了这个。 scapy.all import *
似乎先查看当前目录。
上一篇: Scapy.all import * does not work
下一篇: .NET DropDownList SelectedIndexChange Event Not Firing in IE 10