我正在运行代码
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 版本从 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-apt,错误就消失了
sudo apt remove python3-apt
重新启动然后安装,
sudo apt install python3-apt
注意: 仅当 python3 是新安装依赖项时才使用。否则它可能会破坏系统上现有的基于 python3 的设置。不过,使用
--reinstall
是更安全的选择。
与某些类似,我有 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
就我而言,问题是我删除了 Ubuntu 18.04 上的原始
/usr/bin/python3
符号链接,并将其替换为指向 python3.8
的符号链接。当我恢复原来的指向python3.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
保存文件。
应该可以。
我遇到了这个问题,这是因为我安装了 python 3.6.9 和 3.5.2 (Ubuntu 16.04) 我也用过
sudo update-alternatives --config python3
不使用 auto
将其设置回 auto
解决了我的问题(然后给予 3.6.9 优先级是让最新版本的 python 默认运行的下一步)
新用户:我无法回复其他评论:(
该问题是由于将 python3.7 或更高版本设置为默认 python3 引起的。 @bluevalien 就像你说的我必须使用
sudo update-alternatives --config pyhton3
并且我将 python3.6 设置为默认值。抱歉,我无法发表评论,因为我也是新用户
我在运行任何命令时也遇到此错误,它表明该文件位于
/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为例)。
当我作为超级用户时,我也遇到了“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
问候。
有时谷歌搜索比chatgpt-4o更好。 解决方案很简单,正如本问答所示
sudo apt remove python3-apt
sudo apt install python3-apt
chatgpt-4o 给了我错误的方向和错误的答案。我花了一些时间来解决它的错误解决方案。