我对Python比较陌生,在使用Python网络操作工具Scapy进行编程时遇到了问题。然而,我不知道这是不是一个Scapy问题,而是一个作为Python新手的问题。在scapy site上,他们给出了一个我无法在自己的机器上运行的示例程序:
#! /usr/bin/env python
import sys
from scapy import sr1,IP,ICMP
p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
p.show()我得到的答案是:
Traceback (most recent call last):
File "test.py", line 4, in <module>
from scapy import sr1,IP,ICMP
ImportError: cannot import name sr1因此,我的问题是:安装Python库时,我是否需要更改路径或其他类似内容?另外,有没有什么我可以在解释器中运行的东西来告诉我替身包的内容?我可以很好地运行from scapy import *,但是因为我不知道它里面是什么,所以很难使用它。
发布于 2008-10-23 13:59:24
有了Federico Ramponi的警告:“你应该把scapy作为自己的解释器使用,而不是作为一个库”,我想回答这个问题中不特定于scapy的部分。
Q:安装Python库时,我需要更改路径或其他类似的东西吗?
A:,我想你说的是在整个系统范围内改变PYTHONPATH。这通常不是必需的,也不是一个好主意。
第三方Python库应该安装在系统目录中,比如/usr/lib/python2.5/site-packages,或者安装在本地,在这种情况下,您可能希望在Makefile或驱动程序外壳脚本中设置PYTHONPATH。
Q:另外,有没有什么我可以在解释器中运行的东西来告诉我替罪羊包的内容?
A:你可以这样做:
>>> import scapy
>>> dir(scapy)或者更好:
>>> import scapy
>>> help(scapy)在评论中提出的奖金问题。
Q:是不是和“from scapy import *”一样?
A: import scapy将本地命名空间中的替身名称绑定到替身模块对象。OTOH,from scapy import *不绑定模块名称,但是所有在替身模块中定义的公共名称都绑定在本地命名空间中。
请参阅Python参考手册6.12 The import statement的第6和7段。
发布于 2009-06-02 22:30:01
我也遇到了同样的问题,在使用scapy v2.x时。
from scapy.all import * 相反,v1.x
from scapy import *作为编写的here
享受它=)
发布于 2008-10-23 14:05:46
它会告诉你在scapy中找不到sr1。不知道你有多新手,但解释器永远是你的朋友。启动解释器(只需在命令行中键入"python“),并在提示符下(>>>)键入(但不要键入>,它们会自动出现):
>>> import scapy
>>> from pprint import pformat
>>> pformat(dir(scapy))最后一行应该打印很多东西。您是否在任何地方看到了'sr1‘、'IP’和'ICMP‘?如果不是,那么这个例子就有问题。
Try also help(也尝试帮助)
这就是我能为你提供多大的帮助,而不需要安装scapy并亲自查看你的实际源文件。
https://stackoverflow.com/questions/229756
复制相似问题