ValueError:在使用conda命令后无法分析CPython sys.version

ValueError:在使用conda命令后无法分析CPython sys.version,python,anaconda,cpython,conda,Python,Anaconda,Cpython,Conda,我遇到了一个无法解决的错误,尽管其他人报告了相同的错误 我正在远程连接到Linux机器。我已安装最新版本的anaconda: $ bash Anaconda2-2.4.0-Linux-x86_64.sh // A lot of python libraries get installed installing: _cache-0.0-py27_x0 ... Python 2.7.10 :: Continuum Analytics, Inc. creating default environm

我遇到了一个无法解决的错误,尽管其他人报告了相同的错误

我正在远程连接到Linux机器。我已安装最新版本的anaconda:

$ bash Anaconda2-2.4.0-Linux-x86_64.sh

// A lot of python libraries get installed

installing: _cache-0.0-py27_x0 ...
Python 2.7.10 :: Continuum Analytics, Inc.
creating default environment...
installation finished. 
我更新了相应的路径,它似乎可以工作:

$ python
Python 2.7.10 |Anaconda 2.4.0 (64-bit)| (default, Oct 19 2015, 18:04:42) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
很好,所以现在我想使用
conda
,它是与Anaconda一起预装的。看起来水蟒给了我3.18.3:

$ conda --version
conda 3.18.3
接下来,我将更新conda:

$ conda update conda
Fetching package metadata: An unexpected error has occurred, please consider sending the
following traceback to the conda GitHub issue tracker at:

    https://github.com/conda/conda/issues

Include the output of the command 'conda info' in your report.


Traceback (most recent call last):
  File "/code/anaconda2-4-0/bin/conda", line 5, in <module>
    sys.exit(main())
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/cli/main.py", line 195, in main
    args_func(args, p)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/cli/main.py", line 202, in args_func
    args.func(args, p)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/cli/main_update.py", line 48, in execute
    install.install(args, parser, 'update')
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/cli/install.py", line 239, in install
    offline=args.offline)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/cli/common.py", line 598, in get_index_trap
    return get_index(*args, **kwargs)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/api.py", line 42, in get_index
    unknown=unknown)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/utils.py", line 119, in __call__
    value = self.func(*args, **kw)
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/fetch.py", line 237, in fetch_index
    session = CondaSession()
  File "/code/anaconda2-4-0/lib/python2.7/site-packages/conda/connection.py", line 61, in __init__
    super(CondaSession, self).__init__(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 272, in __init__
    self.headers = default_headers()
  File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 555, in default_headers
    'User-Agent': default_user_agent(),
  File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 524, in default_user_agent
    _implementation = platform.python_implementation()
  File "/usr/lib/python2.7/platform.py", line 1521, in python_implementation
    return _sys_version()[0]
  File "/usr/lib/python2.7/platform.py", line 1486, in _sys_version
    repr(sys_version))
ValueError: failed to parse CPython sys.version: '2.7.10 |Anaconda 2.4.0 (64-bit)| (default, Oct 19 2015, 18:04:42) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'
$conda更新conda
获取包元数据:发生意外错误,请考虑发送
以下是对conda GitHub问题跟踪器的回溯,网址为:
https://github.com/conda/conda/issues
在报告中包含命令“conda info”的输出。
回溯(最近一次呼叫最后一次):
文件“/code/anaconda2-4-0/bin/conda”,第5行,输入
sys.exit(main())
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/cli/main.py”,main中第195行
args_func(args,p)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/cli/main.py”,第202行,在args_func中
args.func(args,p)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/cli/main_update.py”,执行中的第48行
install.install(参数,解析器,'update')
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/cli/install.py”,第239行,安装中
脱机=args.offline)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/cli/common.py”,第598行,在get_index_trap中
返回get_索引(*args,**kwargs)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/api.py”,第42行,在get_索引中
未知=未知)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/utils.py”,第119行,在调用中__
值=self.func(*参数,**kw)
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/fetch.py”,第237行,在fetch_索引中
会话=条件会话()
文件“/code/anaconda2-4-0/lib/python2.7/site packages/conda/connection.py”,第61行,在__
超级(条件,自我)。\uuuuu初始值(*args,**kwargs)
文件“/usr/lib/python2.7/dist packages/requests/sessions.py”,第272行,在__
self.headers=default_headers()
文件“/usr/lib/python2.7/dist-packages/requests/utils.py”,第555行,默认为_标题
“用户代理”:默认的用户代理(),
默认用户代理中的文件“/usr/lib/python2.7/dist packages/requests/utils.py”,第524行
_implementation=platform.python_implementation()
python_实现中的文件“/usr/lib/python2.7/platform.py”,第1521行
返回系统版本()[0]
文件“/usr/lib/python2.7/platform.py”,第1486行,系统版本
报告(系统版本))
ValueError:无法分析CPython sys.version:“2.7.10 | Anaconda 2.4.0(64位)|(默认值,2015年10月19日,18:04:42)\n[GCC 4.4.7 20120313(Red Hat 4.4.7-1)]”
不幸的是,我不知道如何避免这个错误

我发现了其他一些StackOverflow帖子。建议从头开始重新安装python和pycharm(但我只安装了Anaconda,不使用pycharm)。重新安装顶棚,但我这里不使用。最后,它实际上是一个bug,并提出了一个修复方案。不幸的是,重新命名
sys.version
无法解决此错误。这甚至不是我的电脑,所以我不想深入研究代码,冒着把事情弄糟的风险


我希望能有一些想法或建议。

第三种解决方案是正确的。这确实是一个bug,因为modified
sys.version
string破坏了许多依赖于特定格式字符串的
platform
模块函数

但是,如果您不能正确地修复它,您可以尝试一种黑客解决方法。模块
platform
实际上有一个用于解析
sys.version
string的缓存:所以您需要做的是:

  • 备份Anaconda已修改的sys.version
  • 将其替换为合法版本字符串
  • 调用任何解析sys.version字符串的
    平台
    模块函数
  • 复制Anaconda修改的sys.version的缓存
  • 从备份还原sys.version
  • 黑客本身:

    try:
        import sys # Just in case
        start = sys.version.index('|') # Do we have a modified sys.version?
        end = sys.version.index('|', start + 1)
        version_bak = sys.version # Backup modified sys.version
        sys.version = sys.version.replace(sys.version[start:end+1], '') # Make it legible for platform module
        import platform
        platform.python_implementation() # Ignore result, we just need cache populated
        platform._sys_version_cache[version_bak] = platform._sys_version_cache[sys.version] # Duplicate cache
        sys.version = version_bak # Restore modified version string
    except ValueError: # Catch .index() method not finding a pipe
        pass
    

    您需要在conda有机会异常失败之前,将此代码放置在将执行它的某个位置。不确定最好的位置是什么,但您可以使用
    conda/cli/main.py
    conda/api.py
    conda/connection.py
    ,在Windows上也有同样的问题,通过将PythonPath更改为Anaconda安装来修复它(我以前安装过Python).

    在系统升级后,我在Linux下也遇到了同样的问题。通过删除~/.local目录,我成功地获得了这条消息(“解析CPython sys.version失败”)。可能有用…

    我找到了解决这个问题的另一个方法。我在MAC上打开Spyder时也遇到了同样的问题。这是对我有效的解决方案

    • 首先从系统中卸下现有Spyder 康达斯派德酒店
    克隆目录并运行安装程序

    • git克隆
    • cd spyder

    • python bootstrap.py


    这将打开spyder实例。

    只需安装正确版本的python即可。 对我来说,当我安装Python3.6.5时,它起到了作用。 使用此命令

    • conda install Python=3.6.5
    完成安装后,请再次运行spyder。

    在安装FiPy后尝试使用以下命令打开spyder时,我遇到了此错误(
    ValueError:无法解析CPython sys.version
    ):

    在Terminal中运行以下代码行可以解析它():

    conda update——名称为python pyzmq python.app
    
    OK,看起来如果我分配
    sys.version
    并去掉垂直条中(包括)的文本,那么
    platform.python\u implementation()
    就可以工作了。我怎样才能长期解决这个问题?我假设
    sys.version
    被分配到实现sys的某个地方?我将
    conda create --name <MYFIPYENV> --channel guyer --channel conda-forge fipy nomkl 
    
    File "/Users/user/anaconda3/lib/python3.6/site-packages/spyder/utils/introspection/plugin_client.py", line 18, in
    import zmq
    File "/Users/user/anaconda3/lib/python3.6/site-packages/zmq/init.py", line 34, in
    from zmq import backend
    File "/Users/user/anaconda3/lib/python3.6/site-packages/zmq/backend/init.py", line 21, in
    if platform.python_implementation() == 'PyPy':
    File "/Users/user/anaconda3/lib/python3.6/platform.py", line 1234, in python_implementation
    return _sys_version()[0]
    File "/Users/user/anaconda3/lib/python3.6/platform.py", line 1192, in _sys_version
    repr(sys_version))
    
    conda update --name <MYFIPYENV> python pyzmq python.app