Reputation: 964
I'm running into an error that I can't solve despite others having reported the same error.
I am connecting remotely to a Linux machine. I have installed the latest version of 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.
I updated the corresponding paths and it seems like it works:
$ 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
Great, so now I want to use conda
, which is pre-installed with Anaconda. It looks like Anaconda gave me 3.18.3:
$ conda --version
conda 3.18.3
Following the test drive instructions, I update 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)]'
Unfortunately, I can't figure out how to avoid this error.
I found a few other StackOverflow posts. This one suggests reinstalling python and pycharm from scratch (but I just installed Anaconda and I don't use pycharm). Another suggests reinstalling canopy, but I'm not using that here. Finally, a third suggests that it's actually a bug, and proposes a fix. Unfortunately, re-naming sys.version
fails to resolve the error. This isn't even my computer so I don't want to get deep into the code and risk messing something up.
I would appreciate some thoughts or advice.
Upvotes: 15
Views: 21474
Reputation: 3096
I found another solution for this issue. I was getting the same issue while opening the Spyder on MAC. Here is the solution which worked for me.
First remove the existing Spyder from the system using conda remove spyder
Then clone its GitHub repository and run the setup:
git clone https://github.com/spyder-ide/spyder.git
cd spyder
python bootstrap.py
This will open the Spyder instance.
Upvotes: 2
Reputation: 509
I had this error (ValueError: failed to parse CPython sys.version
) when trying to open Spyder after installing FiPy using the following line from the FiPy website:
conda create --name <MYFIPYENV> --channel guyer --channel conda-forge fipy nomkl
The error originates from a package called 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))
Running the following line of code in Terminal resolved it (from a Spyder maintainer on GitHub):
conda update --name <MYFIPYENV> python pyzmq python.app
Upvotes: 1
Reputation: 3096
Just install proper version of python. For me it worked when i installed Python 3.6.5. Use this command
after finishing the installation Run spyder again.
Upvotes: 1
Reputation: 804
I had the same issue under Linux after a system upgrade. I managed to get ride of this message ("failed to parse CPython sys.version") by deleting the ~/.local directory. Can be useful maybe...
Upvotes: 1
Reputation: 91
Just had the same issue on Windows, fixed it by changing the PythonPath to the Anaconda installation (I had a previous installation of Python).
Upvotes: 9
Reputation: 2274
Third solution is correct. This is indeed a bug, since modified sys.version
string breaks a number of platform
module functions that rely on that string having certain format.
However, if you cannot fix it properly, you can attempt a hacky workaround. Module platform
actually has a cache for parsing sys.version
string: so what you have to do is:
platform
module function that unparses sys.version string.Hack itself:
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
You need to put this code somewhere where it will be executed before conda has a chance to fail with exception. Not sure what the best place would be, but you could try it with conda/cli/main.py
, conda/api.py
or conda/connection.py
.
Upvotes: 12