我正在尝试从github(https://github.com/danielfullmer/nzbfs)安装(python setup.py install)一些python包但是得到了
SyntaxError: ('invalid syntax', ('build/bdist.linux-x86_64/egg/nzbfs/fs.py', 135, 15, " for key in ('st_atime', 'st_ctime', 'st_gid', 'st_mode', 'st_mtime', 'st_nlink', 'st_size', 'st_uid'):\n"))
怎么了?在debian上试过python2.6 + 3.1,但总是卡在for key ..
行
def getattr(self, path, fh=None):
st = os.lstat(self.db_root + path)
d = {
key: getattr(st, key)
for key in ('st_atime', 'st_ctime', 'st_gid', 'st_mode',
'st_mtime', 'st_nlink', 'st_size', 'st_uid')
}
if stat.S_ISREG(st.st_mode):
nzf_size = get_nzf_attr(self.db_root + path, 'size')
if nzf_size is not None:
d['st_size'] = nzf_size
nzf_mtime = get_nzf_attr(self.db_root + path, 'mtime')
if nzf_mtime is not None:
d['st_mtime'] = nzf_mtime
d['st_blocks'] = d['st_size'] / 512
return d
答案 0 :(得分:3)
为您提供语法错误的行称为dict comprehension;这些被添加到Python 2.7和3中的语言中。
此模块不 Python 3就绪;例如,它使用ConfigParser
模块,在Python 3中重命名为configparser
。您必须坚持使用Python 2.7。
如果这是一个showstopper,你必须raise an issue与开发人员,要求Python 2.6兼容性(不是很难实现)。
答案 1 :(得分:1)
您可以将字典理解改为此
d = dict(
(key, getattr(st, key))
for key in ('st_atime', 'st_ctime', 'st_gid', 'st_mode',
'st_mtime', 'st_nlink', 'st_size', 'st_uid')
)
如果你需要它在2.6
中工作