我遇到了一个无法解决的错误,尽管其他人报告了相同的错误。
我正在远程连接到 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 预装的。看起来 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)]'
不幸的是,我不知道如何避免这个错误。
我发现了其他一些 StackOverflow 帖子。 这个建议从头开始重新安装python和pycharm(但我刚刚安装了Anaconda并且不使用pycharm)。 另一个建议重新安装顶篷,但我在这里没有使用它。最后,第三个建议这实际上是一个错误,并提出了修复方案。不幸的是,重命名
sys.version
无法解决该错误。这甚至不是我的电脑,所以我不想深入研究代码,也不想冒搞砸事情的风险。
我希望得到一些想法或建议。
第三个解决方案是正确的。这确实是一个错误,因为修改后的
sys.version
字符串破坏了许多依赖于具有特定格式的字符串的 platform
模块函数。
但是,如果您无法正确修复它,您可以尝试一种巧妙的解决方法。模块
platform
实际上有一个用于解析 sys.version
字符串的缓存:所以你要做的是:
platform
模块函数。黑客本身:
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)。
我找到了这个问题的另一个解决方案。我在 MAC 上打开 Spyder 时遇到了同样的问题。这是对我有用的解决方案。
首先使用
conda remove spyder
从系统中删除现有的 Spyder
然后克隆其 GitHub 存储库并运行设置:
git clone https://github.com/spyder-ide/spyder.git
cd spyder
python bootstrap.py
这将打开 Spyder 实例。
系统升级后,我在 Linux 下也遇到了同样的问题。我设法通过删除 ~/.local 目录来摆脱此消息(“无法解析 CPython sys.version”)。也许有用...
只需安装正确版本的 python 即可。 对我来说,当我安装 Python 3.6.5 时它就起作用了。 使用此命令
安装完成后再次运行spyder。
使用 FiPy 网站中的
以下行安装 FiPy 后尝试打开 Spyder 时,我遇到了此错误 (
ValueError: failed to parse CPython sys.version
):
conda create --name <MYFIPYENV> --channel guyer --channel conda-forge fipy nomkl
错误源自一个名为
zmq
的包:
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))
在终端中运行以下代码行解决了这个问题(
来自 GitHub 上的 Spyder 维护者):
conda update --name <MYFIPYENV> python pyzmq python.app