答案1
sudo apt-get --reinstall install python3-minimal
我也尝试了很多方法,但是这个简单的事情解决了我的问题。
答案2
笔记:
~/.bashrc
此答案涵盖了仅因更改或而导致损坏的情况~/.bash_aliases
,无论是通过成功创建python
不同 Python 解释器的别名,还是意外引入语法错误或其他故障命令。但这个问题与另一个最近被问到的问题,以及在此处描述的案例中进行的其他更改的信息,表明该问题很可能是由于全局 Python 解释器实际上被更改而发生的(并且在这种情况下可能确实发生了),而不是由于对 的任何更改而发生的~/.bashrc
。曾经使用过一种
alias
基于的技术来python
运行不同的 Python 解释器,特别是当系统python
是 Python 2 而另一个解释器是 Python 3 时,并且没有做出其他重大改变,只需按照此答案中的步骤即可解决问题。 更改了指向/usr/bin/python
的内容(无论是使用ln
还是使用update-alternatives
)或卸载了与 Python 相关的软件包的读者更有可能通过程序员自己对这个问题的回答。
根据您的描述,我假设问题出现之前您所做的唯一修改是编辑~./bashrc
。如果是这种情况,那么您没有更改 Ubuntu 系统的默认 Python 版本。
相反,您编辑~/.bashrc
并添加了一个别名,以便在交互式 Bash shell 中python3
运行python3.7
,或者尝试这样做。也许该别名在稍后的 中破坏了某些内容~/.bashrc
,或者您在编辑时犯了一些错误~/.bashrc
,而问题与该别名没有直接关系。无论哪种情况,现在只要您启动交互式 Bash shell,它几乎都会立即退出。
解决方案是备份损坏的内容~/.bashrc
以供日后参考,然后复制/etc/skel/.bashrc
到您的主目录,覆盖它并恢复默认行为。在您的环境中,有多种方案可以获得有效的 shell,但您不需要其中任何一种,因为您不需要 shell 来将您可以读取的文件复制到您可以写入的目录中。您可以使用图形文件浏览器执行复制。
你运行一个图形终端应用程序,通过按Ctrl+ Alt+来启动它T,因此除非你的终端自动启动到分离发生问题的 Ubuntu 系统,我假设您还可以在出现问题的系统上运行图形文件浏览器。我不确定您说的“我只能使用我的终端与 ubuntu 对话”是什么意思。起初我以为这可能是一个 WSL 系统,而终端是一个 Windows 应用程序,在这种情况下需要不同的解决方法。但如果是这样,你可能不会通过按Ctrl+ Alt+来启动它T。
尽管如此,如果您无法在此系统上运行图形文件浏览器,那么仍然可以相当轻松地解决这个问题。如果是这样,那么我建议您在问题中添加有关为什么会这样的详细信息。
为了解释为什么我建议在覆盖之前备份当前存在的损坏内容.bashrc
:这样您就可以准确地找出问题所在,并确保您可以恢复所做的任何其他自定义。
详细信息如下。
发生了什么
在您的问题中,您展示了一张截图Prvt_Yadav 的回答到如何将 python3.7 设为默认并表示您已nano ~/.bashrc
完成答案顶部所示的修改。该更改包括添加以下行:
alias python3=python3.7
这定义了一个 shell 别名。Shell 别名不会影响整个系统的行为,也不会影响您尝试运行脚本时发生的情况。它们不会影响图形程序的行为(除非它们影响 shell,shell 会影响终端,而某些终端是图形化的)。此外,您.bashrc
在主目录中编辑的文件特定于您的用户帐户,因此不会影响其他用户。别名定义所做的只是使您在 shell 中运行的以 开头的命令的行为python3
就像它们以 开头一样python3.7
。
当您运行图形终端程序时,终端会运行一个 shell。除非您已将图形终端程序配置为其他行为,否则此 shell 就是您已配置 Ubuntu 为您提供的非图形登录的 shell。除非您已更改该 shell,否则它是/bin/bash
。
当交互式bash
shell(以及一些非交互式 bash shell)启动时,它来源一些启动文件,也就是说,它会读取这些文件并尝试运行其中的所有命令。这些文件取决于您如何运行 shell,但通常(并且,对于从桌面会话打开的图形终端运行的 shell,基本上总是如此)它们包括.bashrc
您主目录中的文件。
因为.bashrc
是来源,而不是在单独的 shell 进程中作为脚本运行,它能够为启动它的 shell 设置环境,这是它的目的。但这也意味着在其中运行的命令(如)exit
会影响该 shell。 中的错误有多种方式.bashrc
会导致您的 shell 立即退出(并非所有错误都像 的存在那样明显exit
)。
当您的图形终端运行的 shell 退出时,您的终端窗口/选项卡将关闭(除非您已将终端配置为其他行为)。在大多数情况下,这会导致完全退出终端应用程序。
如何修复
解决问题所需的只是恢复 的未损坏副本.bashrc
。实际上,只需重命名(或删除) 就足够了~/.bashrc
,但如果没有该文件,您的 shell 可能不会像您预期的那样运行。由于将未损坏的文件从 复制到您的主目录并不困难/etc/skel/.bashrc
,我建议您这样做。这是在新创建用户帐户时复制到用户主目录的文件。
假设您的图形文件浏览器(通常是 Nautilus)可以工作,您可以使用它来复制文件。这不需要任何提升的权限。
- 在图形文件浏览器窗口中打开您的主目录。
- 显示隐藏文件。Ctrl+H将在基本上所有图形文件浏览器中执行此操作。(除非它们已经显示,在这种情况下Ctrl+H会重新隐藏它们。)
- 重命名
.bashrc
。我建议将名称更改为.bashrc.old
。 - 打开另一个图形文件浏览器窗口或选项卡并转到
/etc/skel
。 - 从那里拖到
.bashrc
您的主目录。 - 尝试打开终端应用程序。问题应该已经解决。
然后你就可以找出问题所在了。例如,你可以使用命令diff
来比较两个文件。你也可以在文本编辑器中打开重命名后的旧文件。
我假设您有一个图形文件浏览器,因为您有一个图形终端。只要您安装带有图形界面的 Ubuntu 版本,它就会有一个图形文件浏览器。在“原始”Ubuntu 系统中,它是 Nautilus,但在 Xubuntu 中它是 Thunar,在 Kubuntu 中它是 Dolpin,在 Lubuntu 中它是 PCManFM,等等。
同样,您也应该有一个图形文本编辑器。在“原始”Ubuntu 系统中,它是 Gedit,但在 Xubuntu 中它是 Mousepad,在 Kubuntu 中它是 Kate,在 Lubuntu 中它是 Leafpad,等等。您实际上可以~/.bashrc
在图形文本编辑器中进行编辑,并尝试通过这种方式解决问题,而不必先从 中恢复它/etc/skel/
。但我不建议这样做。相反,我建议您在继续执行任何其他操作之前重新获得使用交互式 shell 的能力。
一个警告
假设你没有遵循该答案中的任何其他说明,并且只是编辑了~/.bashrc
,并且没有做任何其他修改来改变你的默认 Python 版本,为了改变命令的行为,你所做的实际上是最安全的事情之一python3
。
这是因为,如果操作正确,它只会影响您以交互方式运行时运行哪个解释器python3
(以及何时python3
从像在交互式 shell 中一样的文件运行时.bashrc
,在定义别名的位置下方)。
因此,如果您决定继续更改与 Python 相关的命令的行为,我建议您对涉及运行的任何事情都要格外小心update-alternatives
。基本上,您不应该update-alternatives
在 Ubuntu 中使用技术来更改系统 Python 解释器。同样,您不应该手动修改中的文件来/usr/bin
更改 Python 的默认版本。(有些评论者认为您已经做了这些事情,也许是因为不幸的是,人们经常这样做,导致 Ubuntu 系统崩溃。)