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

zdwk9cvp  于 2022-12-25  发布在  Python
关注(0)|答案(8)|浏览(513)

我正在运行代码sudo apt update,出现获取错误
模块未找到错误:没有名为"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
z9smfwbn

z9smfwbn1#

在我的例子中,问题是由于将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

wbgh16ku

wbgh16ku2#

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

sudo apt remove python3-apt

重新启动然后安装,

sudo apt install python3-apt

**注意:**仅当python3是一个新的安装依赖项时使用。否则它会破坏系统上现有的基于python3的安装。尽管使用--reinstall是一个更安全的选择。

jm81lzqq

jm81lzqq3#

在我的例子中,问题是我删除了Ubuntu 18.04上原始的/usr/bin/python3符号链接,并将其替换为指向python3.8的符号链接。
我的结论是:如果你需要一些库或模块定制版本,把它安装在一个独立的环境中,不要弄乱系统设置。否则你就有可能破坏某些东西,而这些东西只有在以后很难弄清楚到底是哪里出了问题时才能注意到。

pw136qt2

pw136qt24#

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

zzzyeukh

zzzyeukh5#

这个问题是由于设置python3.7或更高版本为默认python3引起的。@bluevalien像你说的我必须使用sudo update-alternatives --config pyhton3,我设置python3.6为默认值。抱歉,我不能发表评论,因为我也是一个新用户

rggaifut

rggaifut6#

你需要修改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
保存文件。
应该可以。

pokxtpni

pokxtpni7#

我还遇到了 *"cp:无法获取"apt_pkg. cpython-36m-x86_64-Linux-gnu. so"的状态:没有这样的文件或目录 *,而我是作为超级用户。我做了同样的命令没有sudo命令,它工作得很好。

    • 我的系统中有python 3.5、3.6和3.7**,所以我认为python的版本不是问题。
cp apt_pkg.cpython-36m-x86-64-linux-gnu.so.so apt_pkg.so

问候。

egdjgwm8

egdjgwm88#

二零二二年十二月二十四日

我也得到了这个错误时,几乎运行任何命令,它显示的文件在

/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py

无法导入apt_pkg
可能有几个原因,导致这个问题。,但我建议不要直接删除和重新安装python3-apt,可能会有问题,第一次尝试可以检查,如果你已经更新了默认的python3到一个更高的版本之前,像我一样,我已经更新了默认的python3到python3.10,这就是为什么这个错误出现.运行

sudo update-alternatives --config python3

要重新选择默认值,通过选择旧的(我的python3.8),“no module named apt_pkg”错误已经消除。
顺便说一句,给我自己一个提示,下次当有人想在新的python环境中运行进程时,使用conda创建一个虚拟环境会非常安全和好,与当前的操作系统(例如我的Ubuntu 20.04)没有冲突。

相关问题