Pycap在脚本中无法工作

1 投票
1 回答
848 浏览
提问于 2025-04-16 19:25

我正在尝试使用pycap这个工具来捕获以太网数据包,具体的链接是http://pycap.sourceforge.net/。当我在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。这会是个问题吗?

1 个回答

5

你的脚本叫做 pycap,而且你在里面用 import pycap 来导入自己,这样就会导入到自己了(. 通常是导入路径中的第一个目录)。因为导入的内容是缓存的,所以不会导致无限循环,而是给你一个指向自己模块的引用,但这个模块里并没有定义 capture 或其他东西。所以,换个名字吧。

撰写回答