Python 2.6.6应用程序的Scapy投掷语法错误

时间:2018-06-21 22:42:52

标签: python syntax-error scapy

我曾经在Python2.7上开发过一个程序,并且需要针对Python 2.6.6对其进行重新设计。我做了一些小的更改,但是在尝试编译时收到此错误。有人遇到过吗?我在Google上找不到很多东西。任何帮助将不胜感激

 Traceback (most recent call last):
  File "makexml.py", line 13, in <module>
    from scapy.all import rdpcap
  File "/user/.pyenv/versions/2.6.6/lib/python2.6/site- 
  packages/scapy/all.py", line 11, in <module>
    from scapy.config import *
  File "/user/.pyenv/versions/2.6.6/lib/python2.6/site- 
packages/scapy/config.py", line 84
    self.layers = {owner for f in self.fields for owner in f.owners}
                           ^
   SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:1)

集合理解是got backported to Python 2.7从Python 3开始的一项新功能。

因此,如果您尝试在较早的版本中使用它,则会得到SyntaxError

最简单的更改是将生成器表达式传递给set构造函数:

self.layers = set(owner for f in self.fields for owner in f.owners)

(这将一直运行到2.4。在此之前,没有内置set,也没有生成器表达式,但是您可能会遇到更大的问题,例如,异常…)

答案 1 :(得分:0)

Scapy 2.4.0与Python 2.6不兼容。您应该将Scapy降级到2.3.3,它支持Python 2.6(我认为是2.5)。