转自:
piaoxue1949:https://blog.csdn.net/piaoxue1949/article/details/80295385
python运行报错
File "/usr/share/Anaconda3/lib/python3.6/platform.py", line 1257, in python_implementation
return _sys_version()[0]
File "/usr/share/Anaconda3/lib/python3.6/platform.py", line 1215, in _sys_version
repr(sys_version))
ValueError: failed to parse CPython sys.version: '3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19) \n[GCC 7.2.0]'
问题定位:
/usr/share/Anaconda3/lib/python3.6/platform.py:1215:
# 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()
_sys_version_parser:
_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]"