Python升级导致终端...打不开

Raf*_*iro 10 python linux terminal ubuntu zsh

我刚刚将 ubuntu 中的 python 升级到 python 3.10 以使用 match/case 语句,但现在我的终端无法打开。任何地方。我厌倦了在 Visual Studio Code 上打开它,但它说路径不存在。Gnome 终端和终结者甚至不会给出任何反馈。我使用带有 i3wm 的 Ubuntu 20.04,我的 shell 是 zsh,以下是我使用的命令(我从这个站点这个站点修改了它们):

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.6 10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python2.6 10
sudo update-alternatives --config python
sudo update-alternatives --config python3
Run Code Online (Sandbox Code Playgroud)

我记得我之前的 python 版本是 3.7 左右。

如果您愿意,这里是上面的规格:

  • 操作系统:Ubuntu 20.04
  • 外壳:zsh(哦我的zsh)
  • 宝马:i3
  • 终端: gnome 终端

重要提示:请记住我无权访问终端。我还没有尝试过恢复模式,但如果您有非基于术语的解决方案,那么它是首选。

Raf*_*iro 10

刚刚找到了撤销的方法。如果你遇到同样的问题,我是这样做的:

Ctrl+Alt+Fn 和几个 F 按钮(F1、F2、F3...)直到进入 tty 菜单。我以自己的身份登录(不是 root),然后再次运行sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1以创建默认的 python 2.8 sudo update-alternatives --config python3。然后就正常工作了。


小智 5

已编辑

新答案

我找到了安装您首选版本的更好方法python。它比使用ppa:deadsnakes/ppa存储库更稳定、更安全。

当然,现在这不再是您遇到的问题的直接答案。但我在这里编辑这个答案,希望对您和任何可能想要python3.10在默认情况下未安装它的计算机上安装的人有所帮助。

您可以使用asdf,它是一个工具版本管理器。有了它,你可以安装任何你想要的 python 版本,与你的操作系统无关。它会更冗长,但工作得很好,与某些预安装的python版本没有任何冲突。

为了避免安装asdf和时出现问题python,请安装以下软件包:

sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo apt update && sudo apt upgrade
Run Code Online (Sandbox Code Playgroud)

确保一切都是最新的。

安装asdf

要安装asdf,首先我们从存储库和我们想要的版本的分支克隆asdf(请注意,命令末尾指定的版本可能会更改。我只是按照文档进行操作):

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
Run Code Online (Sandbox Code Playgroud)

现在您只需在脚本配置文件的末尾添加几行即可。它可能会根据您的 shell 发生变化,但请再次检查文档以获取具体说明(包括zsh)。

要了解您使用的终端类型,您可以运行:

sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
Run Code Online (Sandbox Code Playgroud)

如果您正在使用bash,那么您可以将以下内容添加到末尾~/.bashrc(是的,包括点):

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Run Code Online (Sandbox Code Playgroud)

之后,您只需重新启动终端即可。

安装python3.10(或任何你想要的版本)

现在asdf安装完毕,您应该安装一个插件来管理多个python版本。为此,只需运行命令:

asdf plugin-add python
Run Code Online (Sandbox Code Playgroud)

python3.10.4在系统中全局安装,请运行:

asdf install python 3.10.4
Run Code Online (Sandbox Code Playgroud)

进而:

asdf global python 3.10.4
Run Code Online (Sandbox Code Playgroud)

最后,运行:

asdf reshim
Run Code Online (Sandbox Code Playgroud)

最后一个命令是为了asdf在全局安装库后正常工作而进行的一些刷新。asdf为了确定起见,每当您安装某些东西时都运行它。

不过,无需担心在使用 pip 安装某些包或模块后运行此命令(好吧,至少我从来没有)。

感谢Kenzie 学院。在那里学到的。


旧答案

我遇到了完全相同的问题。我在这里找到了答案。

起初,我尝试简单地gnome-terminal在没有终端的情况下打开文件并更改它,但它不起作用,因为使用 GUI 我没有 sudo 权限。因此,对我有用并且我希望对您也有用的解决方法是使用 VSCode 打开文件,然后使用 VSCode 集成终端运行以下命令:

sudo nano /usr/bin/gnome-terminal
Run Code Online (Sandbox Code Playgroud)

当然你不必使用nano,你可以使用vim或其他东西。无论如何,一旦到达那里,您就可以更改文件的第一行,这是一条注释,从

#!/usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

#!/usr/bin/python3.8
Run Code Online (Sandbox Code Playgroud)

Ubuntu 20.04 与 很好兼容python3.8,所以这就是为什么我建议你把它放在python3.8那里,但你肯定可以测试其他版本是否有效。

这不是回去的办法python3.8。您仍然会拥有python3.10.