我试图用Python2.6在我的Readynas duo上运行耳机,但遇到了一个与确定操作系统版本相关的错误。作为一个非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)发布于 2013-11-08 19:16:40
这是python2.6的一个bug (找不到问题号atm,但在2.7中已经修复了)。在Linux系统上对详细的OS版本信息的代码检查是这样编码的:
def _parse_release_file(firstline):
#some code
l = string.split(string.strip(firstline))
if l:
version = l[0]
#more code
return '', version, id因此,如果发布文件为空,则永远不会将version变量赋值给它,这会使UnboundLocalError在尝试返回它时抛出异常。
要解决这个问题,您可以修补platform.py文件,使其不抛出此错误,最好是在_parse_release_file的开头添加行version = ''和id = '' -这就是在2.7中修复的方式。如果您不能在NAS上修改该文件,那么可以尝试修改原始码,并将对platform.platform()调用替换为像"Linux-generic-x86"这样的硬编码字符串。
https://stackoverflow.com/questions/19855778
复制相似问题