Как решить «ModuleNotFoundError: нет модуля с именем« apt_pkg »» и «E: подпроцесс вернул код ошибки»
Я использую Pop-os 22.04 и обновил свой Python по умолчанию с 3.10 до 3.11. После обновления python я получаю эту ошибку каждый раз, когда пытаюсь выполнить «sudo apt update».
$ sudo apt update
**Note: Skiped first few lines, those were not errors.**
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 3, 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.10, эта ошибка больше не возникает. Я сделал это, чтобы изменить свою версию Python:
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.11 2 auto mode
* 1 /usr/bin/python3.10 1 manual mode
2 /usr/bin/python3.11 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
Очень извините за мой плохой английский
2 ответа
cd /usr/lib/python3/dist-packages;sudo ln -s apt_pkg.cpython-3[67]m-x86_64-linux-gnu.so apt_pkg.so
Лучшее решение здесь — просто обойти проблему. Не пытайтесь запустить 3.11 в качестве Python по умолчанию в Pop-os. Вернитесь к версии 3.10 в Pop-os. Если вам нужен Python 3.11, установите его с помощью pyenv (https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv), но пусть 3.10 останется Python по умолчанию для Pop-os. пока команда Pop-os не решит обновиться до версии 3.11.