1

github( https://github.com/danielfullmer/nzbfs )からPythonパッケージをインストール(python setup.py install)しようとしていますが、

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                            
4

2 に答える 2

3

構文エラーを与える行は、辞書内包表記と呼ばれます。これらは、Python 2.7 および 3 で言語に追加されました。

このモジュールはPython 3 対応ではありません。ConfigParserたとえば、Python 3 で名前が変更されたモジュールを使用しますconfigparser。Python 2.7 に固執する必要があります。

それが問題である場合は、開発者に問題を提起して、Python 2.6 との互換性を要求する必要があります (達成するのはそれほど難しくありません)。

于 2013-02-16T12:06:49.123 に答える
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で動作させる必要がある場合

于 2013-02-16T13:00:31.910 に答える