我已经在/usr/local/bin
中安装了Python 2.7.9。现在它不能再工作了。我在/usr/bin/
中还有另一个Python,但是在路径中,/usr/local/bin/
排在第一位。我该如何删除2.7.9版本的Python?
/usr/local/bin
中。安装方法将指示如何删除已安装文件。/usr/local
目录层次结构中的最常见方法是从源代码编译并在编译和链接后运行sudo make install
。如果您尚未删除原始(未压缩)源目录,则可以进入该目录并通过运行以下命令来删除已编译的Python软件包: sudo make uninstall
make
没有uninstall
目标(不幸的是,这比您想象的要常见),另一个(不太优雅的)选择是使用find
命令在/usr/local
目录树中搜索所有与要删除的应用程序中的其他文件具有相同修改时间的文件。checkinstall
工具。它可以用于创建RPM或Debian软件包,而不是运行make install
,然后可以使用系统的常规软件安装工具进行安装(和卸载)。/usr/local
目录下。如果您是通过软件包管理器安装的软件包,请使用其卸载功能来卸载软件包。 - tripleeefind
命令在 /usr/local
中搜索所有与我想要删除的可执行文件具有相同修改时间的文件。现在我使用 checkinstall
工具创建 RPM 或 Debian 包,然后安装该包,而不是运行 make install
。 - Anthony Geoghegan免责声明: 我现在已经学到了很多,建议您为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脚本编写,可以让您对运行代码的解释器进行严格控制,但不需要干扰可能至关重要的系统文件。您的 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
which python
现在是/bin/usr/python。谢谢。 - Velrest