在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
但是,还有其他文件导入mydir/lib/mine
内的Util.py,该文件没有任何问题。
那么,当我从其他地方导入时,为什么它会给我这个追溯,在这种情况下是mydir/test/testing
?
产量v上的语法错误0其他''
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但不确定如何
答案 0 :(得分:1)
键入
单独运行pythonpython
如果显示小于2.5,则不能使用三元条件语法。这是在2.5
中引入的如果显示2.5,则可以执行此操作
python pqtest.py
强制pqtest.py
使用该版本
答案 1 :(得分: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中工作。