如何修复'ModuleNotFoundError:没有名为'apt_pkg'的模块?

Mog*_*kan 5 python ubuntu-18.04

我正在运行代码sudo apt update并获取错误

ModuleNotFoundError:没有名为“ apt_pkg”的模块。

请帮我解决。

sudo apt update


Hit:20 http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu bionic InRelease       
Fetched 93,3 kB in 2s (42,4 kB/s)                   
Traceback (most recent call last):
  File "/usr/lib/cnf-update-db", line 8, in <module>
    from CommandNotFound.db.creator import DbCreator
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
Run Code Online (Sandbox Code Playgroud)

小智 30

在我的情况下,问题是由于将 python 版本从3.6升级到3.8

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2

sudo update-alternatives --config python3
Run Code Online (Sandbox Code Playgroud)

解决者:

将 python 版本设置回3.6

  • 如果我想默认使用最新的Python版本怎么办? (5认同)
  • @HeathMitchell,您可以编辑文件 /usr/bin/add-apt-repository 并使用特定版本的 python 更改 #!/usr/bin/python3 行。例如:#!/usr/bin/python3.6。查看更多:https://askubuntu.com/a/1184982 (4认同)
  • 我做了同样的事情。谢谢,这解决了我的问题! (3认同)

小智 26

刚刚重新安装了python3-apt,错误消失了

sudo apt remove python3-apt
Run Code Online (Sandbox Code Playgroud)

重启然后安装,

sudo apt install python3-apt
Run Code Online (Sandbox Code Playgroud)

  • 在 Ubuntu 19.10 上,“apt remove python3-apt”还删除了 38 个其他软件包。所以可能不是明智之举。 (14认同)
  • 这是一个可怕的想法,也是一个潜在危险的事情,因为它删除了大量与 ubuntu、xserver 等相关的其他软件包 (4认同)
  • 而不是删除,/安装只需执行: apt install --reinstall python3-apt (4认同)
  • 卸载并重新安装可能会暂时起作用,但也可能会在以后破坏您的 apt 软件包。此错误可能是由下面发布的任何答案引起的。 (3认同)
  • 确实是一个糟糕的主意。很多包裹都被删除了。我复制了终端消息并一一重新安装了所有已删除的软件包。希望没有链接被破坏。它给了我一个很好的教训 - 在输入“y”之前阅读消息! (3认同)
  • 我只是在没有阅读其他评论的情况下这样做了,它产生了不同的问题,我不知道如何解决。 (2认同)

Dam*_*amo 21

与某些类似,我有 python3.8 和 python3.11,其中 python 和 python3 都是 /usr/bin 中 python3.11 的符号链接

我运行了以下命令解决了该问题:

cd /usr/lib/python3/dist-packages/
sudo cp apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
Run Code Online (Sandbox Code Playgroud)


Fed*_*890 13

就我而言,问题是我删除/usr/bin/python3了 Ubuntu 18.04 上的原始符号链接,并将其替换为一个指向python3.8. 当我恢复原来的指向时问题消失了python3.6

我的看法是:如果您需要某个库或模块的自定义版本,请将其安装在隔离环境中,不要弄乱系统设置。否则,您将面临破坏某些东西的风险,而这些东西只有在以后很难弄清楚究竟出了什么问题时才能注意到。

  • 我也做了同样的事情,问题是有博客展示了如何安装新版本的 python,不幸的是这会破坏系统范围的配置。 (3认同)

And*_*des 5

您需要更改Python版本(3.6对我有用)。但是,如果你想要默认的另一个 python 版本(例如 3.8):

尝试编辑该文件并使用特定版本的 python(例如 3.6)/usr/bin/add-apt-repository更改该行。#!/usr/bin/python3

要更改此文件,请打开文本编辑器(例如 nano):

sudo nano /usr/bin/add-apt-repository

替换#!/usr/bin/python3为您的 python 版本(本例中为 3.6)

#!/usr/bin/python3.6

保存文件。

应该管用。