如何在 /usr/local/bin/ 中移除 Python。

10

我已经在/usr/local/bin中安装了Python 2.7.9。现在它不能再工作了。我在/usr/bin/中还有另一个Python,但是在路径中,/usr/local/bin/排在第一位。我该如何删除2.7.9版本的Python?


不好意思,我写错了。 - Velrest
5
做一些类似于“$export PATH=/usr/bin:$PATH”的操作。那么它应该就可以正常工作了。但是这只适用于使用Bash shell的情况。如果你在使用其他shell,可能需要做一些不同的操作。 - Nipun Talukdar
3
你可以做一些残忍的事情,比如:sudo rm -rf /usr/local/bin/python,或者只是将它重命名? - Amir H
4
安装可能包括大量的库文件。任何安装该软件包的程序都应该知道它创建了什么以及在哪里;如果没有这些信息,我们无法真正提供帮助,只能推测。 - tripleee
@AmirH 它可以工作了。which python现在是/bin/usr/python。谢谢。 - Velrest
4个回答

11
您的问题缺乏细节,其中最重要的是您如何将Python安装到/usr/local/bin中。安装方法将指示如何删除已安装文件。
将软件包安装到/usr/local目录层次结构中的最常见方法是从源代码编译并在编译和链接后运行sudo make install。如果您尚未删除原始(未压缩)源目录,则可以进入该目录并通过运行以下命令来删除已编译的Python软件包:
 sudo make uninstall

如果源代码已被删除,您可以尝试重新下载源代码。
如果make没有uninstall目标(不幸的是,这比您想象的要常见),另一个(不太优雅的)选择是使用find命令在/usr/local目录树中搜索所有与要删除的应用程序中的其他文件具有相同修改时间的文件。
现在,我建议安装checkinstall工具。它可以用于创建RPM或Debian软件包,而不是运行make install,然后可以使用系统的常规软件安装工具进行安装(和卸载)。

在 MacOS 上也有像 Homebrew 这样的软件包管理器,它们会安装到 /usr/local 目录下。如果您是通过软件包管理器安装的软件包,请使用其卸载功能来卸载软件包。 - tripleee
如果源代码被删除了,那么呢? - Dr. Mian
@MianAsbatAhmad 这个问题比较棘手。你可以尝试重新下载源代码。另一个选项是使用 find 命令在 /usr/local 中搜索所有与我想要删除的可执行文件具有相同修改时间的文件。现在我使用 checkinstall 工具创建 RPM 或 Debian 包,然后安装该包,而不是运行 make install - Anthony Geoghegan

8

免责声明: 我现在已经学到了很多,建议您为shell或shell会话设置环境变量,而不是使用此答案。例如,如果您手动将系统的Python2解释器重新链接到Python3解释器,则可能会对系统造成严重破坏。请谨慎使用此答案。

只需重置符号链接即可。

首先,找出哪个python:

$ which python

在我的情况下,我得到:
/usr/local/bin/python

然后找到符号链接指向的位置。

$ file /usr/local/bin/python
/usr/local/bin/python: symbolic link to `/usr/bin/python'

然后只需将符号链接重新指向默认位置(在此例中,我使用默认位置:/usr/bin/python)。

无需卸载任何内容。

更新


我后来找到了很多更好的方法来实现完全相同的行为,而不会对整个系统产生影响。

假设我在/usr/bin中有一个不需要的python安装程序,并且在/opt/bin中有一个需要的python安装程序。 以比较的角度来看,/usr/bin是Python 3.5,而/opt/bin是Python 2.7。这将导致使用错误的Python解释器产生直接后果,而不是在后续出现微妙的错误。

应用程序默认设置

如果您想要(在Linux系统上)更改运行Python脚本的解释器,则可以通过GUI或通过xdg-mime(可以在此处找到详细步骤)进行更改。对于macOS或Windows,这可以通过GUI轻松完成。

交互式Shell

如果您想要更改特定shell的默认Python,则我可以看到两种好方法。一种是更改默认搜索PATH以在特定情况下将/opt/bin设置在usr/bin之前,但是,如果您有许多替代安装程序用于系统包,则可能会出现问题。另一种方法是为要使用的版本设置Python别名。这是首选解决方案,因为它仅更改解释器,并且只是引用现有命令的快捷方式。

例如,要设置别名,我可以使用以下命令:

alias python="/opt/bin/python"

如果我想更改默认路径,我可以使用以下命令:

export PATH=/opt/bin:$PATH

将这些行添加到~/.bashrc~/.bash_aliases(后者在Ubuntu默认情况下)将使这些快捷方式成为您启动的任何交互式shell的默认设置。结合应用程序默认值和交互式shell脚本编写,可以让您对运行代码的解释器进行严格控制,但不需要干扰可能至关重要的系统文件。

3

您的 PATH 环境变量。它包含了 bash 在查找要执行的程序时依次搜索的目录列表。基本上,您希望将 /usr/local/bin 放在 PATH 环境变量的开头。请将以下内容添加到您的 ~/.bashrc 文件中:

export PATH=/usr/local/bin:$PATH

您可以在bash中运行set命令查看当前设置。

或者,您可以将/usr/bin/python重命名为/usr/bin/python2.3,并创建一个符号链接指向新版本,例如:

ln -s /usr/local/bin/python /usr/bin/python

我没有.bashrc文件。我应该创建这个文件吗? - Velrest
1
如果你需要改变PYTHONPATH以及可能的许多其他变量和设置,这只会使事情更加复杂。 - tripleee

1
您可以使用checkinstall来移除Python,具体步骤如下:
  1. 安装checkinstall
  2. 使用checkinstall制作Python的deb文件
  3. 使用dpkg -r命令删除该deb文件
更多详情请参考此篇文章

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接