我试图使用pycap http://pycap.sourceforge.net/捕获以太网数据包。当我在具有root权限的python提示符上使用以下命令时,它正在工作
>>>import pycap.capture
>>>p = pycap.capture.capture("wlan0")
>>>p.next()
(Ethernet(type=0x608, 00:1b:b1:46:53:5d -> ff:ff:ff:ff:ff:ff), ARP(op=0x1, protocol=0x800, 00:1b:b1:46:53:5d (192.16.68.10) -> 00:00:00:00:00:00 (192.16.110.39)), '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 1307898356.222398)
但如果我将这些命令作为脚本运行,则会出现以下错误
>>>sudo python pycap.py
Traceback (most recent call last):
File "pycap.py", line 2, in <module>
from pycap import *
File "/home/nikhil/Code/Python/pycap.py", line 5, in <module>
p = capture.capture(device)
NameError: name 'capture' is not defined
有什么建议吗? pycap http://pycap.sourceforge.net/说它需要python2.3并使用python2.6。这是一个问题吗?
答案 0 :(得分:5)
使用pycap
的脚本本身称为pycap
,因此import pycap
导入自身(.
通常是导入路径上的第一个目录)。因为导入是缓存,所以这不会导致无限递归,而是为您提供对自己模块的引用,当然这不会定义capture
或其他任何内容。重命名。