7

While installing the socketio package for python using pip3 install socketio, I got the following results:

ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.

WARNING: The scripts easy_install and easy_install-3.8 are installed in '/home/bill/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Successfully installed netifaces-0.10.6 setuptools-3.3 socketio-0.2.1

Although I was able to import socketio successfully, pip3 seems corrupted(?). Specifically, when trying to run anything including pip3, even pip3 by itself in the terminal, I get the same error:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/home/<username>/.local/lib/python3.8/site-packages/pkg_resources.py", line 1479, in <module>
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 144, in apport_excepthook
    with os.fdopen(os.open(pr_filename,
FileNotFoundError: [Errno 2] No such file or directory: '/var/crash/_usr_bin_pip3.1000.crash'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/pip3", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/home/<username>/.local/lib/python3.8/site-packages/pkg_resources.py", line 1479, in <module>
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'

I tried reinstalling pip3 but it didn't help. I migrated from ubuntu to mint thinking it is something buggy with the distribution but same results. I also corrupted ubuntu when I tried to remove python and reinstall it since I couldn't use pip, but, you know what they say, live and learn. Edit: Nothing on using pip3: module "importlib._bootstrap" has no attribute "SourceFileLoader" works for me.

I am currently using linux mint 20, but I experienced the same problem on ubuntu 20.04 and 20.04.1.

Any ideas would be appreciated!

Rabbid76
  • 142,694
  • 23
  • 71
  • 112
  • Is the pip and python same version? Did you have a python env. before? – tukan Feb 15 '21 at 14:29
  • 2
    You want to install [python-socketio](https://pypi.org/project/python-socketio/), as socketio is **not** the official package (although it [does not appear to be malicious](https://github.com/pypa/warehouse/issues/5213), it is just depending on an old and broken setuptools version). – Martijn Pieters Feb 17 '21 at 22:28

3 Answers3

2

Edit: Martijn Peters makes a good point that this is the socketio you are looking for: https://pypi.org/project/python-socketio Read on if you need a solution for the original one you posted about.

Summary: pip3 install git+https://github.com/allenmcgehee/socketio-0.2.1-patched

I was able to reproduce this in a docker container running ubuntu:20.04 exactly as you described which gave me some hope that I could help out.

I found that socketio had a dependency for setuptools==3.3 which seemed odd to me, but lines up with why the core functionality of pip was breaking after installing socketio.

I am not sure where this package is maintained as there is no git repo referenced. I did find a Russion website in the PKG-INFO, but I wasn't sure where to go from there...

Here is a version of socketio with a requirement of setuptools>=42 so that nothing gets broken: https://github.com/allenmcgehee/socketio-0.2.1-patched

And finally, here is the single command that should install socketio for you without breaking pip: pip3 install git+https://github.com/allenmcgehee/socketio-0.2.1-patched

**I am assuming you've already fixed pip.

halfer
  • 18,701
  • 13
  • 79
  • 158
Allen M
  • 1,282
  • 6
  • 13
  • 1
    Although fixing up that dependency issue is noble, the OP is almost certainly installing the wrong project. They want `python-socketio` instead. – Martijn Pieters Feb 17 '21 at 22:29
2

Perhaps you meant this socketio instead?: https://pypi.org/project/python-socketio

python3 -m pip install python-socketio

The package literally named "socketio" seems like it may simply be old and unsupported1, while "python-socketio" seems alive and developed 2 3

To that end, it's often valuable to take a look at similar packages and also to watch out for typosquatting et al. when installing packages via pip!

ti7
  • 7,285
  • 3
  • 25
  • 49
0

This happened to me with a different module. My solution was to down-grade the version of pip and the version of the module. So, for you the answer would be to run:

python -m pip install pip== (previous version of your pip)
python -m pip uninstall socketio
python -m pip install socketio==0.2.0
Dharman
  • 21,838
  • 18
  • 57
  • 107