2013-02-16 65 views
1

我試圖安裝(蟒蛇的setup.py安裝)從GitHub一些Python包(https://github.com/danielfullmer/nzbfs),但得到蟒蛇「在關鍵」 - 如何解決「語法錯誤:無效的語法」

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")) 

什麼錯?試圖python2.6的+ 3.1 Debian的,但總是陷入對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        
+3

這是一本字典的理解這是隻有在Python 2.7和有效期,工作,所以使用2.6韓元」工作。 – l4mpi 2013-02-16 12:03:52

回答

3

,讓你一個語法錯誤的線被稱爲dict comprehension;這些被添加到Python 2.7和3的語言中。

該模塊是而不是 Python 3已準備好;它使用ConfigParser模塊,例如在Python 3中已將其重命名爲configparser。您必須堅持使用Python 2.7。

如果這對你來說是一個炫耀者,那麼你必須和開發者一起raise an issue,要求Python 2.6的兼容性(不難實現)。

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

+0

我回避告訴OP如何修復*這個特定的實例*;代碼庫足夠大,它可以輕鬆地隱藏更多需要修復的Python 2.7語法。 – 2013-02-16 13:06:34