You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

update-alternatives配置Python失效及Python应用运行异常求助

问题描述

终端操作与初始问题

There are 2 choices for the alternative python (providing /usr/bin/python).
    
      Selection    Path                 Priority   Status
    ------------------------------------------------------------
      0            /usr/bin/python3.11   10        auto mode
      1            /usr/bin/python3.11   10        manual mode
    * 2            /usr/bin/python3.7    0         manual mode
    
    Press <enter> to keep the current choice[*], or type selection number: 
    update-alternatives: warning: forcing reinstallation of alternative /usr/bin/python3.7 because link group python is broken
    pavan@mars:~$ python --version
    Python 3.11.0
    pavan@mars:~$ virt-manager 
    bash: /usr/bin/virt-manager: /usr/bin/python3: bad interpreter: No such file or directory
    pavan@mars:~$ sudo update-alternatives --install /usr/bin/python python3 /usr/bin/python3.7 0

遇到两个问题:

  • 已通过update-alternatives将默认Python设为3.7,但python --version仍显示3.11
  • Python类应用(如virt-manager)运行失败,但普通.py脚本可正常执行

更新信息

pavan@mars:/usr/bin$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 19 Dec  2 20:58 /usr/bin/python3 -> /usr/bin/python3.11
pavan@mars:/usr/bin$ virt-manager
Traceback (most recent call last):
  File "/usr/bin/virt-manager", line 6, in <module>
    from virtManager import virtmanager
  File "/usr/share/virt-manager/virtManager/virtmanager.py", line 13, in <module>
    import gi
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 40, in <module>
    from . import _gi
ImportError: cannot import name '_gi' from partially initialized module 'gi' (most likely due to a circular import) (/usr/lib/python3/dist-packages/gi/__init__.py)

解决方案

1. 修复python命令指向错误的问题

你当前的update-alternatives配置只处理了python链接,但系统里的python3还是硬指向3.11,且执行的install命令参数有误,正确操作如下:

步骤1:为python3添加替代项

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 0

数字代表优先级,数值越高优先级越高,若想让3.7成为默认,后续可手动切换。

步骤2:切换python3的默认版本

sudo update-alternatives --config python3

在弹出的选项中选择对应3.7的编号,按回车确认。

步骤3:同步python与python3指向(可选)

如果想让python和python3保持一致,执行:

sudo ln -s /usr/bin/python3 /usr/bin/python

或者用update-alternatives单独配置python:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 10
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 0
sudo update-alternatives --config python

选择3.7的编号即可。

完成后运行python --version和python3 --version验证指向是否正确。

2. 修复virt-manager运行失败的问题

当前gi模块导入错误是因为系统gi库是针对默认Python3.11编译的,切换到3.7后无对应兼容版本,可通过以下方法解决:

方法1:为Python3.7安装对应gi依赖

sudo apt-get install python3.7-dev
sudo pip3.7 install pycairo pygobject

方法2:修改virt-manager脚本解释器

直接让脚本用适配的Python3.11运行:

sudo nano /usr/bin/virt-manager

将第一行的#!/usr/bin/python3改成#!/usr/bin/python3.11,保存退出后再运行virt-manager。

方法3:使用虚拟环境(推荐)

避免修改全局Python版本,创建基于3.11的虚拟环境运行:

python3.11 -m venv virt-manager-env
source virt-manager-env/bin/activate
pip install pycairo pygobject
/usr/bin/virt-manager

内容的提问来源于stack exchange,提问作者James Bond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:20:27