1

在 mydir/test/testing/pqtest.py

import os,sys
lib_path = os.path.abspath('../../lib/mine')
sys.path.append(lib_path)

import Util                <---- get a traceback
import string
import random

# my code

    Traceback (most recent call last):
       File "pqtest.py", line 5 in ?
           import Util
       File "mydir/lib/mine/Util.py", line 89
          yield v if l > 0 else ''                       Error is point at if

SyntaxError: invalid syntax

但是,还有其他文件在里面导入 Util.py mydir/lib/mine,这个文件没有任何问题。

那么,在这种情况下,当我从其他地方导入时,为什么它会给我这个回溯mydir/test/testing

yield v 的语法错误 if l > 0 else ''

def expand():
    for l,v in zip(field,val):
        yield l
        yield v if l > 0 else ''

这适用于 python 2.5,但不适用于 python 2.4

我假设我需要告诉 pqtest.py 使用 python 2.5 但不确定如何

4

2 回答 2

1

通过键入自行运行 python

python

如果显示小于 2.5,则不能使用三元条件语法。这是在 2.5 中引入的

如果它确实显示 2.5,你可以这样做

python pqtest.py

强制pqtest.py使用该版本

于 2013-08-07T19:04:47.707 回答
1

如果您愿意更改 Util.py,显而易见的做法是重写代码,使其与 2.4 兼容。从评论来看,不更改 Util.py 的唯一原因是:

…其他人将其作为python 2.5来依赖。

但只要您的新代码对 Python 2.5+ 的影响与原始代码完全相同,这不是问题。

例如,而不是这个:

def expand():
    for l,v in zip(field,val):
        yield l
        yield v if l > 0 else ''

做这个:

def expand():
    for l,v in zip(field,val):
        yield l
        if l > 0:
            yield v
        else:
            yield ''

现在其他依赖它作为 python 2.5 的人将没有任何变化,但它也可以在 2.4 中工作。

于 2013-08-07T19:45:38.553 回答