# CPython
match = _sys_version_parser.match(sys_version)
if match is None:
raise ValueError(
'failed to parse CPython sys.version: %s' %
repr(sys_version))
version, buildno, builddate, buildtime, compiler = \
match.groups()
-
File "/usr/share/Anaconda3/lib/python3.6/platform.py", line 1215, in _sys_version (不同版本的行号 可能不同)
_sys_version_parser = re.compile(
r'([\w.+]+)\s*' # "version<space>"
r'\(#?([^,]+)' # "(#buildno"
r'(?:,\s*([\w ]*)' # ", builddate"
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
发现此正则表达式未考虑Anaconda增加了"|Anaconda, Inc.|"的问题,需要过滤掉.
解决:
在_sys_version_parser中增加一行过滤掉"|Anaconda xxx|"等信息即可:
_sys_version_parser = re.compile(
r'([\w.+]+)\s*' # "version<space>"
r'(?:\|[^|]*\|)*\s*' #去掉'|Anaconda xxx|'等,避免出现failed to parse CPython sys.version
r'\(#?([^,]+)' # "(#buildno"
r'(?:,\s*([\w ]*)' # ", builddate"
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
原文:https://blog.youkuaiyun.com/piaoxue1949/article/details/80295385

本文解决了Anaconda环境下CPython版本信息解析失败的问题,通过调整正则表达式排除了Anaconda特定字符串干扰,确保了sys.version字段的正确解析。
772

被折叠的 条评论
为什么被折叠?



