从不同目录导入时出现Python错误

时间:2013-08-07 18:54:27

标签: python

在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

如果l&gt;

产量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但不确定如何

2 个答案:

答案 0 :(得分:1)

键入

单独运行python
python

如果显示小于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中工作。