更改默认python后netplan不起作用

问题描述

在 ubuntu 18.04 中,当我通过以下命令将认 python 从 python 3.6 更改为其他版本时:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1

或者当我删除 python 3.6 并安装其他版本时 netplan apply 不起作用并导致此错误

  File "/usr/sbin/netplan",line 20,in <module>
    from netplan import Netplan
  File "/usr/share/netplan/netplan/__init__.py",line 18,in <module>
    from netplan.cli.core import Netplan
  File "/usr/share/netplan/netplan/cli/core.py",line 24,in <module>
    import netplan.cli.utils as utils
  File "/usr/share/netplan/netplan/cli/utils.py",line 25,in <module>
    import netifaces
ModuleNotFoundError: No module named 'netifaces'

并且命令 pip install netifaces 有一些错误

解决方法

我之前在 vagrant 上也遇到过同样的问题。如果使用 update-alternatives 使 python3 别名指向另一个版本的 Python,vagrant 将不起作用。您不能使用 update-alternatives 更改 Python3 的别名。

,

由于某种原因,我的 ubuntu 服务器更新后丢失了我的 python 配置,解决方法:

检查我是否可以在 CLI 上导入模块:

python
import python

在收到相同的消息后,我意识到我的 python 环境正在使用这些模块,即使它们全部显示为已安装,我继续“升级”python 模块:

python pip install --upgrade pip

python pip install --upgrade netifaces

python pip install --upgrade "any module you need to use for your script"

就像模块被识别更新并正确安装一样。