【问题标题】:Installing socketio module on python3 seems to be corrupting pip在 python3 上安装 socketio 模块似乎正在破坏 pip
【发布时间】:2020-08-12 21:50:06
【问题描述】:

在使用pip3 install socketio为python安装socketio包时,我得到了以下结果:

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

虽然我能够成功import socketio,但 pip3 似乎已损坏(?)。 具体来说,当尝试在终端中运行包括 pip3 在内的任何内容时,甚至是 pip3 本身,我都会遇到同样的错误:

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'

我尝试重新安装 pip3,但没有帮助。我从 ubuntu 迁移到 mint 认为发行版有问题,但结果相同。当我尝试删除 python 并重新安装它时,我也损坏了 ubuntu,因为我无法使用 pip,但是,你知道他们说什么,生活和学习。 编辑:using pip3: module "importlib._bootstrap" has no attribute "SourceFileLoader" 上的任何内容都不适合我。

我目前使用的是 linux mint 20,但我在 ubuntu 20.04 和 20.04.1 上遇到了同样的问题。

任何想法都将不胜感激!

【问题讨论】:

  • pip和python版本一样吗?你有 python 环境吗?以前?
  • 你想安装python-socketio,因为socketio不是官方包(虽然它是does not appear to be malicious,它只是依赖于一个旧的和损坏的setuptools版本)。

标签: python linux python-3.8


【解决方案1】:

也许您的意思是socketio?:https://pypi.org/project/python-socketio

python3 -m pip install python-socketio

字面上命名为“socketio”的包看起来可能只是陈旧且不受支持1,而“python-socketio”似乎还活着并且正在开发23

为此,在通过 pip 安装包时,查看类似的包并注意typosquatting et al. 通常很有价值!

【讨论】:

  • socketio 包是 not typosquatting,但它要安装的错误包。
  • 啊,只是一般性警告,感谢评论链接!
【解决方案2】:

编辑:Martijn Peters 指出这是您正在寻找的 socketio:https://pypi.org/project/python-socketio 如果您需要针对您发布的原始问题的解决方案,请继续阅读。

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

我能够在运行 ubuntu:20.04 的 docker 容器中重现此问题,正如您所描述的那样,这给了我一些希望可以提供帮助。

我发现 socketio 依赖于 setuptools==3.3,这对我来说似乎很奇怪,但与安装 socketiopip 的核心功能中断的原因一致>.

我不确定这个包在哪里维护,因为没有引用 git repo。我确实在 PKG-INFO 中找到了一个俄罗斯网站,但我不确定从那里去哪里......

这是 socketio 的一个版本,要求为 setuptools&gt;=42,这样就不会被破坏:https://github.com/allenmcgehee/socketio-0.2.1-patched

最后,这是一个可以在不破坏 pip 的情况下为您安装 socketio 的命令: pip3 install git+https://github.com/allenmcgehee/socketio-0.2.1-patched

**我假设你已经修复了 pip。

【讨论】:

  • 虽然修复该依赖问题是高尚的,但几乎可以肯定 OP 安装了错误的项目。他们想要python-socketio
【解决方案3】:

这发生在我的另一个模块上。我的解决方案是降级 pip 的版本和模块的版本。所以,对你来说,答案是运行:

python -m pip install pip== (previous version of your pip)
python -m pip uninstall socketio
python -m pip install socketio==0.2.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2014-03-09
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多