解决Anaconda执行pip等命令报alueError: failed to parse CPython sys.version错误的问题

转自:
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]"
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值