ModuleNotFoundError 没有名为 apt_pkg 的模块

use*_*294 9 python linux apt

我正在尝试使用命令添加一个 repo

 sudo add-apt-repository ppa:gezakovacs/ppa
Run Code Online (Sandbox Code Playgroud)

以下是完整的错误 -

    Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 11, in <module> from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module> from apport.packaging_impl 
import impl as packaging 
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 11, in <module> from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Run Code Online (Sandbox Code Playgroud)

得到以上错误。

我已经在 Xubuntu 16.04 上安装了 python2 、 Python3.5 和 Python3.6 。它会导致任何问题吗???

K.S*_*.S. 8

这可能是因为您以一种奇怪的方式切换了 python 版本。你有/usr/lib/python3/dist-packages/apt_pkg.so吗?如果您删除了某个版本的 python,这可能会丢失。

对我有用的答案是来自askubuntu 论坛

ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so
Run Code Online (Sandbox Code Playgroud)


lak*_*tak 7

如果你看/usr/bin/add-apt-repository它说

#!/usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

在顶部。如果您使用较新的 python(例如,dist 有 3.5 但您安装了 3.7)/usr/bin/python3进行了更新,那么您将指向一个没有apt_pkg.

您可以临时编辑/usr/bin/add-apt-repository以指向

#!/usr/bin/python3.5
Run Code Online (Sandbox Code Playgroud)

(插入你的发行版 python 版本)


小智 6

我有一个类似的问题,在做 apt-get upgrade 时......问题是 apt-get 试图使用 python2.7,但符号链接指向 python3.4:

debian:/usr/bin# cat /etc/debian_version
8.10
debian:/usr/bin# ll /usr/bin/python
lrwxrwxrwx 1 root root 18 Feb 26 17:02 /usr/bin/python -> /usr/bin/python3.4
Run Code Online (Sandbox Code Playgroud)

通过创建新的符号链接修复它

debian:/usr/bin# rm /usr/bin/python
debian:/usr/bin# ln -s /usr/bin/python2.7 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

  • 我能够用 `apt-add-repository` 解决类似的问题,只是这次我不得不重新链接我的 `python3` 以指向 `python3.5` 而不是 3.6。虽然有些概念。 (4认同)