我对Python比较陌生,并且在使用Python网络操作工具Scapy编程时遇到了问题.但是,我不知道它是否与Scapy问题一样多,因为它是一个傻瓜新手问题.在scapy网站上,他们提供了一个我无法在自己的机器上运行的示例程序:
#! /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, infrom scapy import sr1,IP,ICMP ImportError: cannot import name sr1
所以我的问题是:在安装Python库时,我是否需要更改路径或类似内容?另外,我可以在解释器中运行一些东西来告诉我scapy包的内容吗?我可以运行from scapy import *
得很好,但由于我不知道里面有什么,所以很难使用它.
来自Federico Ramponi的警告"你应该使用scapy作为自己的翻译,而不是作为一个图书馆",我想回答问题的非scapy特定部分.
问:安装Python库时,是否需要更改路径或类似内容?
答:我认为你在谈论改变PYTHONPATH
整个系统.这通常不是必需的或者是个好主意.
第三方Python库应安装在系统目录中,例如/usr/lib/python2.5/site-packages
,或安装在本地,在这种情况下,您可能希望PYTHONPATH
在Makefile或驱动程序shell脚本中进行设置.
问:另外,我可以在翻译中运行一些东西来告诉我scapy包的内容吗?
答:您可以这样做:
>>> import scapy >>> dir(scapy)
甚至更好:
>>> import scapy >>> help(scapy)
在评论中提出了奖金问题.
问: "进口scapy"与'scapy import*'相同吗?
答: import scapy
将本地命名空间中的scapy名称绑定到scapy模块对象.OTOH from scapy import *
不绑定模块名称,但scapy模块中定义的所有公共名称都绑定在本地名称空间中.
请参阅Python参考手册的第6和第7段,6.12 import语句.