【问题标题】:Can't uninstall global python3.5 module after upgrading to python3.6升级到python3.6后无法卸载全局python3.5模块
【发布时间】:2022-05-04 21:54:24
【问题描述】:

我最近从 Ubuntu 17.04 升级到 17.10,以便能够接收崩溃补丁。这次升级自动将我从 python3.5 提升到了 python3.6,我对此没有任何问题。但是,我必须重新安装我使用的所有小工具。一个是麻烦。

我使用一个叫tmuxp的工具,官方安装说明是pip install --user tmuxp。但是,似乎前段时间我在我的 python3.5 上全局安装了 tmuxp,现在它在我的/user/local/bin 中有一个可执行文件:

➜ maynard@buddha  ~  which tmuxp
/usr/local/bin/tmuxp

这意味着即使在运行 pip install --user tmuxp 之后,当我运行 tmuxp 时,我也会收到 DistributionNotFound 错误。

➜ maynard@buddha  ~  tmuxp
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 658, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 972, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 863, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (tmuxp 1.3.5 (/home/maynard/.local/lib/python3.6/site-packages), Requirement.parse('tmuxp==1.3.2'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/tmuxp", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3049, in <module>
    @_call_aside
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3033, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3062, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 660, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 673, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 858, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'tmuxp==1.3.2' distribution was not found and
is required by the application

因此,旧的 python3.5 tmuxp 二进制文件将在新的 python3.6 站点包中查找其旧版本。这应该很容易解决。只需卸载tmuxp的python3.5版本即可。但是当我使用pip3.5 时试图卸载python3.6 tmuxp。

pip3.5 uninstall tmuxp
Uninstalling tmuxp-1.3.5:
  /home/maynard/.local/bin/tmuxp
  /home/maynard/.local/lib/python3.6/site-packages/tmuxp-1.3.5.dist-info/DESCRIPTION.rst
  ...
  /home/maynard/.local/lib/python3.6/site-packages/tmuxp/workspacebuilder.py

事实上,pip3.5 列表甚至不显示tmuxp,但我可以在/usr/local/lib/python3.5/dist-packages 中看到它!

ls /usr/local/lib/python3.5/dist-packages
click                     kaptan                  powerline
click-6.7.dist-info       kaptan-0.5.8.egg-info   powerline_status-2.6.egg-info
colorama                  libtmux                 tmuxp
colorama-0.3.9.dist-info  libtmux-0.7.4.egg-info  tmuxp-1.3.2.egg-info

调用sudo 也不起作用。 sudo ~/.local/bin/pip3.5 uninstall tmuxp再次尝试卸载tmuxp的python3.6版本。

我知道我可以删除 /usr/local/bin/tmuxp 中的二进制文件...但我想知道我是如何让自己陷入这种混乱的,以及如何彻底摆脱它。

【问题讨论】:

  • 为什么不直接删除 /usr/local/bin/tmuxp/usr/local/lib/python3.5
  • pip3.5 只是pip 可执行文件的符号链接 - 它仍然指向正确的二进制文件吗?运行pip3.5 -V,输出提到的site-packages 目录是什么?
  • @phd 我知道我可以,但我想知道是否有“正确”的方式来解决这个问题(例如,我可能会错过其他挥之不去的二进制文件)
  • @hoefling 它在我的/home/maynard/.local 中提到了python3.6 站点包...我如何让它与/usr/local/lib/python3.5/dist-packages 交互?
  • @SamMaynard 看起来你没有安装 python3.5 了。我同意@phd - 如果您想进行适当的清理,请在python3.6 旁边安装python3.5,使用pip3.5 list 浏览软件包列表,卸载每个,卸载python3.5,使用@ 安装tmuxp 987654352@.

标签: python-3.x pip python-3.5 python-3.6


【解决方案1】:

tmuxp 直到18.04 bionic (LTS) 才正式存在于 Ubuntu。

/usr/lib/python3/dist-packages

您是否通过其他方法通过apt / apt-get 安装了tmuxp?如果是这样,看看sudo apt-get remove tmuxp 做了什么。

如果你没有 tmuxp 的 apt 包,我担心你系统的 python 安装。

回溯使用history(1) + grep(1)

要了解系统的 python 包是如何以及为什么会出现问题的,取决于您过去运行的命令。希望您仍然拥有安装时的 shell 历史记录。

如果您通过管道到grep(1) 在 Bash history 中查找 tmuxp,例如history | grep tmuxp,你能看到你以前如何结束它的命令吗?

我的预感是你可能用过easy_install,它在 2022 年不再使用了。

清理旧包

我更喜欢全新安装而不是 Ubuntu 升级,即避免此类问题。在最近的版本中没有那么痛苦。

@hoefling 的comment 正在运行中。看来您需要再次安装python 3.5。 This answer 有一些方法可以让 3.5 再次工作。之后就可以安装了。

【讨论】:

  • 感谢您的回复@Tony :) 我在四年多前问过这个问题,并且从那时起肯定会继续前进。我认为您和@hoefling 可能是正确的,我需要重新安装python3.5 才能正确进行清理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2015-05-27
  • 2011-03-30
  • 2015-04-06
  • 2018-05-25
  • 2017-03-05
  • 1970-01-01
相关资源
最近更新 更多