【问题标题】:ModuleNotFoundError No module named apt_pkgModuleNotFoundError 没有名为 apt_pkg 的模块
【发布时间】:2018-07-18 13:18:48
【问题描述】:

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

 sudo add-apt-repository ppa:gezakovacs/ppa

以下是完全错误-

    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'

出现上述错误。

我已经在 Xubuntu 16.04 上安装了 python2、Python3.5 和 Python3.6。 有什么问题吗???

【问题讨论】:

  • 您的问题可能更适合askubuntu.com
  • 对于初学者来说:你有文件/usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so吗?
  • 谢谢。发现了问题。我的 Python3 已链接到 python3.6,但是当更改为 3.5.2 时开始工作。也许 Python 3.6 还没有完全支持
  • 这很奇怪,因为它本来就不应该以这种方式链接。
  • 是的,系统级别可能不支持 Python 3.6,因为系统应该是稳定的,因此坚持使用它开始时使用的 major.minor 版本.如果你想安装和使用 Python 3.6(或 3.7 一个月左右的时间),安装在/usr/local

标签: python linux apt


【解决方案1】:

如果您查看/usr/bin/add-apt-repository,它会说

#!/usr/bin/python3

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

你可以暂时编辑/usr/bin/add-apt-repository指向

#!/usr/bin/python3.5

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

【讨论】:

    【解决方案2】:

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

    对我有用的答案是来自askubuntu forums

    ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so
    

    【讨论】:

      【解决方案3】:

      为特定版本的python安装python-dev模块:

      sudo apt install python3.6-dev
      

      【讨论】:

      • 不幸的是,这并没有改变任何东西:/
      【解决方案4】:

      我在进行apt-get升级时遇到了类似的问题......问题是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
      

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

      debian:/usr/bin# rm /usr/bin/python
      debian:/usr/bin# ln -s /usr/bin/python2.7 /usr/bin/python
      

      【讨论】:

      • 我能够解决apt-add-repository 的类似问题,只是这次我不得不重新链接我的python3 以指向python3.5 而不是3.6。不过有些概念。
      猜你喜欢
      • 2019-10-06
      • 2020-07-16
      • 1970-01-01
      • 2019-03-28
      • 2022-01-07
      • 2017-12-14
      • 2020-12-10
      • 2021-09-02
      相关资源
      最近更新 更多