首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scapy.all import *不工作

Scapy.all import *不工作
EN

Stack Overflow用户
提问于 2012-11-29 00:42:28
回答 4查看 44.6K关注 0票数 13

所以,我用Ubuntu写了一个小脚本。

代码语言:javascript
复制
#!/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()

我写“尝试”是因为这里的另一个主题(尝试它作为一种解决方案)。这段代码的当前输出如下所示

代码语言:javascript
复制
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

仅使用from scapy.all import *而不使用“try”进行尝试时。

代码语言:javascript
复制
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

我尝试了在谷歌上找到的不同的导入方式,但仍然不起作用。有人能告诉我我哪里做错了吗?(不要介意这篇文章的缩进)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-29 00:54:38

从scapy源代码来看,scapy包似乎没有import任何东西,也没有在__init__中定义__all__。因此,您需要显式地import scapy.all (或from scapy import all),然后才能从它from scapy.all import任何其他东西,因为它还不会在sys.modules中。请注意,这只需要在您的程序流中发生一次,因为在解释器导入模块之后,它将可用于从那时起执行的所有代码,而不管它在哪里。查看Python docs on modulesimport是如何工作的,特别是导入一个包,以获得更多细节。

编辑:我想我现在看到问题了,我只是注意到了堆栈跟踪的错误部分。我很确定你在这里处理的是一个名称冲突。您的文件名为scapy.py,因此当您从该文件的上下文执行import scapy时,实际上是将文件本身作为一个模块导入。因为您的文件没有名为all的子模块(它不能,因为它不是一个包),所以您会得到您看到的导入错误。尝试将您的文件名更改为不与您希望在其中导入的任何包或模块冲突的名称,看看效果是否更好。

顺便说一下,在堆栈跟踪中请注意,您的导入实际上是递归地调用您的一个文件。这应该是一个线索,表明在导入过程中出现了混乱。

票数 8
EN

Stack Overflow用户

发布于 2019-06-12 03:11:52

我在OSX上遇到了类似的问题,我安装了pip install scapy包,然后尝试执行我的测试文件scapy.py,我得到的错误是:

代码语言:javascript
复制
python scapy.py
Traceback (most recent call last):
File "scapy.py", line 1, in <module>
from scapy.all import *
File "/Users/**/Desktop/scapy-test/scapy.py", line 1, in <module>
from scapy.all import *
ModuleNotFoundError: No module named 'scapy.all'; 'scapy' is not a package

在我的例子中,是文件名本身导致了它不能被称为scapy.py的问题。我将其更改为test.py,一切都正常了,它与包的位置无关,只与文件名有关。

票数 2
EN

Stack Overflow用户

发布于 2013-12-30 17:43:08

当我在当前目录中有一个scapy.py时,我看到了这一点。scapy.all import *似乎首先在当前目录中查找。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13610064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档