擅长:python、mysql、java
<p>从scapy源代码来看,scapy包似乎没有<code>import</code>任何内容,也没有在<code>__init__</code>中定义<code>__all__</code>。因此,您需要显式地<code>import scapy.all</code>(或<code>from scapy import all</code>),然后才能<code>from scapy.all import</code>它的任何其他内容,因为它还不在<code>sys.modules</code>中。注意,这只需要在程序流中发生一次,因为在解释器导入模块之后,从那时起执行的所有代码都可以使用它,不管它在哪里。查看<a href="http://docs.python.org/2/tutorial/modules.html" rel="noreferrer">Python docs on modules</a>和<code>import</code>如何工作,并具体导入一个包,了解更多详细信息。</p>
<p>编辑:
我想我现在看到问题了,我只是注意到了你堆栈跟踪的错误部分。很确定你要处理的是名字冲突。您的文件名为<code>scapy.py</code>,因此当您从该文件的上下文<code>import scapy</code>导入文件时,实际上是将文件本身作为一个模块导入。因为您的文件没有名为<code>all</code>的子模块(它不能,因为它不是一个包),所以您将看到导入错误。尝试将文件名切换到与要导入其中的任何包或模块都不冲突的文件名,并查看效果是否更好。</p>
<p>顺便说一下,在堆栈跟踪中注意,导入实际上是递归地调用一个文件。这应该是一个线索,说明在进口过程中出了问题。</p>