0

我正在尝试使用 Python 2.6 在我的 Readynas duo 上运行 Headphones,但遇到与确定操作系统版本相关的错误。作为非 python 专家,我想知道是否有人可以通过以下堆栈跟踪帮助我:

[   couchpotato.core.event] Error in event "app.version", that wasn't caught: Traceback (most recent call last):   File "/usr/share/cpserver/couchpotato/core/event.py", line 12, in runHandler
    return handler(*args, **kwargs)   File "/usr/share/cpserver/couchpotato/core/_base/_core/main.py", line 167, in version
    elif 'Darwin' in platform.platform(): platf = 'osx'   File "/usr/local/lib/python2.6/platform.py", line 1520, in platform
    elif system in ('Linux',):   File "/usr/local/lib/python2.6/platform.py", line 361, in dist
    return linux_distribution(distname, version, id,   File "/usr/local/lib/python2.6/platform.py", line 333, in linux_distribution
    firstline = f.readline()   File "/usr/local/lib/python2.6/platform.py", line 269, in
_parse_release_file
    else: UnboundLocalError: local variable 'version' referenced before assignment encoding=UTF-8 debug=False args=['--daemon', '--data_dir', '/media/UsenetTmp/.couchpotato', '--pid_file=/var/run/cpserver/server.pid'] app_dir=/usr/share/cpserver data_dir=/media/UsenetTmp/.couchpotato desktop=None options=Namespace(config_file='/media/UsenetTmp/.couchpotato/settings.conf', console_log=False, daemon=True, data_dir='/media/UsenetTmp/.couchpotato', debug=False, pid_file='/var/run/cpserver/server.pid', quiet=False)
4

1 回答 1

0

这是一个 python2.6 的错误(无法找到问题编号 atm,但已在 2.7 中修复)。在 Linux 系统上检查详细操作系统版本信息的代码是这样编码的:

def _parse_release_file(firstline):
    #some code
    l = string.split(string.strip(firstline))
    if l:
        version = l[0]
    #more code
    return '', version, id

因此,如果发布文件为空,version则永远不会分配变量,这会引发UnboundLocalErroron 试图返回它。

要解决此问题,您可以修补platform.py文件以不引发此错误,最好通过添加行version = ''id = ''开头_parse_release_file- 这就是它在 2.7 中的修复方式。如果您无法在 NAS 上修改该文件,请尝试修改 couchpotato 源并将调用替换为platform.platform()硬编码字符串,例如"Linux-generic-x86".

于 2013-11-08T11:16:40.037 回答