【问题标题】:How to fix 'ModuleNotFoundError: No module named 'apt_pkg'?如何修复'ModuleNotFoundError:没有名为'apt_pkg'的模块?
【发布时间】:2019-10-06 16:24:34
【问题描述】:

我正在运行代码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

【问题讨论】:

标签: python ubuntu-18.04


【解决方案1】:

在我的情况下,问题是由于将 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

解决者:

将 python 版本设置回 3.6

【讨论】:

  • 我也做了同样的事情。谢谢,这解决了我的问题!
  • 我以某种方式创建了从 python3 到 python3.6 的链接。我在这篇文章中运行了第一个命令,它确实对我有用
  • 如果我想默认使用最新的Python版本怎么办?
  • @HeathMitchell 您可以编辑文件 /usr/bin/add-apt-repository 并使用特定版本的 python 更改 #!/usr/bin/python3 行。例如:#!/usr/bin/python3.6。查看更多:askubuntu.com/a/1184982
【解决方案2】:

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

sudo apt remove python3-apt

重启再安装,

sudo apt install python3-apt

【讨论】:

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

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

我的收获是:如果您需要某些库或模块的自定义版本,请将其安装在隔离环境中,不要弄乱系统设置。否则,您可能会破坏某些东西,而这些东西只有在以后很难弄清楚到底是什么错误时才能注意到。

【讨论】:

  • 我也是这样做的,问题是有些博客展示了如何安装新版本的python,不幸的是这会破坏系统范围的配置。
  • 你是如何恢复原作的?
  • @pookie cd /usr/bin &amp;&amp; mv python3 python3_old &amp;&amp; ln -s python3.8 python3
【解决方案4】:

我遇到了这个问题,这是因为我安装了 python 3.6.9 和 3.5.2 (Ubuntu 16.04) 我还使用sudo update-alternatives --config python3 不使用auto 将其设置回auto 为我解决了这个问题(然后给予 3.6.9 优先级是让最新版本的 python 默认运行的下一步) 新用户:我无法回复其他cmets :(

【讨论】:

    【解决方案5】:

    该问题是由将 python3.7 或更高版本设置为默认 python3 引起的。 @bluevalien 就像你说的我必须使用 sudo update-alternatives --config pyhton3 并且我将 python3.6 设置为默认值。抱歉,我也是新用户,无法发表评论

    【讨论】:

    【解决方案6】:

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

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

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

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

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

    #!/usr/bin/python3.6

    保存文件。

    应该可以。

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2019-09-18
      • 2019-07-10
      • 2021-07-03
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多