【问题标题】:python add-apt-repository: ImportError: No module named 'apt_pkg'python add-apt-repository: ImportError: No module named 'apt_pkg'
【发布时间】:2017-07-12 04:25:03
【问题描述】:

当我尝试时:

sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

在 Ubuntu 中,终端显示此错误消息:

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
ImportError: No module named 'apt_pkg'

我有两个版本的python,一个是2.7,一个是3.5。

如何在 python3.5 上安装这个包?

【问题讨论】:

  • 为什么要安装 Python 3.5 的包?很可能它是一个特定于 Ubuntu 的系统包,它与默认系统 Python(即 2.7.x)捆绑在一起
  • 其实你并没有安装任何东西,你只是在系统中添加了一个ppa。对我来说,这看起来像是/usr/bin/add-apt-repository(这是一个 Python3 脚本)中的一个错误。

标签: python importerror apt


【解决方案1】:

我有一些与此完全不同的东西。我的失败了

No module named 'softwareproperties'

我的解决办法是:

sudo vim /usr/bin/add-apt-repository
Change package header from `python3` to `python3.4` (or lower)

当您最近升级添加另一个python3包时,可能会发生这种情况。

【讨论】:

  • 我必须在 Ubuntu 16.04 上将其编辑为 python3.5 并且它有效。谢谢。
  • 在 16.04 上手动编辑系统脚本的包头对我不起作用,而且一开始似乎很容易出错。对我来说,这看起来像是/usr/bin/add-apt-repository 中的一个错误。我最终手动添加了 ppa(并导入了密钥)。
  • @jangroth 我完全同意,添加您的解决方案作为答案:)
  • 它只是指向正确的python版本。很难找到你是否安装了很多
  • tks,将 hashbang 更改为 python3.5,但更改为 python3.4 有效!
【解决方案2】:

ubuntu 18.04:

sudo vim /usr/bin/add-apt-repository

将包头从 python3 更改为 python3.6

这对我有用

【讨论】:

    【解决方案3】:

    只是插话,因为版本号可能已经改变。

    修复摘要:将我的 python3 指向 python 3.5 而不是 3.6

    cd /usr/bin
    rm python3
    ln -s python3.5 python3
    

    详情:我遇到了同样的问题,发现/usr/bin/add-apt-repository 有一个shebang 提示使用/usr/bin/python3,它指向3.6。但是我的系统上也有 3.5,并且必须经常切换它们,所以我将其切换回来,add-apt-repository 现在可以工作了。

    【讨论】:

    • 在 WSL Ubunutu 16.04.4 上为我工作。我遇到了与 OP 相同的错误。
    • 很高兴这有帮助。鉴于假定的 3.6/3.5 的向后兼容性,我感到奇怪的是,我曾经遇到过 Ubuntu 无法与 3.6 一起正常工作的问题。值得注意的是,在我切换回 3.5 之前,我的终端窗口不会启动。在当前的 Ubuntu 中,我认为 3.6 现在是标准的。
    【解决方案4】:

    我在 Ubuntu 20.04 和 python3 指向 python3.6 时遇到了同样的问题。

    我不喜欢编辑系统文件或类似文件(例如 /usr/bin/add-apt-repository)和更改某些命令的符号链接(python 非常“特殊”)。我建议按照 Ubuntu 的方式来管理同一命令的替代版本。

    我的 python3 指向 python3.6,但也安装了 python3.8,所以我更新了替代方案以使 3.6 和 3.8 共存。

    我建议的解决方案是让 python3 指向您使用“Ubuntu 方式”管理替代方案的最后安装版本。

    1. 安装最后一个可用的 python3 版本。也许你有,也许你没有。
    sudo apt update && sudo apt upgrade && sudo apt install python3
    
    1. 现在检查你的 python3 版本
    python3 --version
    
    1. 如果它指向最后一个(例如 3.8),你应该解决你的问题。如果 python3 仍然指向较低的版本(例如 3.6),请检查 last 在哪里...
    which python3.8
    
    1. 现在管理 python 3 替代品。检查是否存在关于 python3 的替代方案。
    sudo update-alternatives --config python3
    
    1. 如果列出了一些,请检查是否安装了最后一个版本以及是否选择它,您应该可以解决您的问题。否则请记住优先级的最高值。 Ubuntu 将使用价值最高的替代方案。退出键入 Enter 按钮。

    2. 添加最后安装的版本作为替代。这里我使用版本的小数部分作为优先级。该命令需要python3

    sudo update-alternatives /usr/bin/python3 python3 /usr/bin/python3.8 8
    
    1. 如果需要,添加其他版本的python3...(低优先级!!!) 现在您的 python3 指向“Ubuntu 风格”中可用的最新版本。 (并且问题应该得到解决)。

    【讨论】:

      【解决方案5】:

      IMO,有一个更简洁的解决方案可以绕过系统文件的修改:sudo apt-get install --reinstall python3-apt

      【讨论】:

        【解决方案6】:

        如果您使用UBUNTU,请更改为python3.8版本或安装它

        sudo apt install python3.8-dev
        

        运行后

        sudo apt-get install software-properties-common
        

        【讨论】:

          【解决方案7】:

          我发现所有包含的东西

          ModuleNotFoundError: No module named 'apt_pkg'
          Reading package lists... Done
          

          是一个 Python 问题。要解决它,必须设置正确的 python 版本。 “正确版本”的含义取决于许多因素

          检查系统中的python版本

          sudo apt list --installed | grep python*
          

          查找/usr/bin 的内容

          ls -lha /usr/bin/python*
          
          • 找到产生错误的 Python 文件
          Traceback (most recent call last):
            File "/usr/BAR/FOO # Is a python file and it varies
            # For the case in this question the file is at
            # /usr/bin/add-apt-repository
          
          • sudo打开文件并添加“正确的python版本”
          #!/usr/bin/python3.6
          
          # Above should be the first line of the file
          

          【讨论】:

            猜你喜欢
            • 2012-11-22
            • 2015-09-10
            • 2011-04-08
            • 2016-08-09
            • 1970-01-01
            • 2017-02-10
            • 2017-04-15
            • 2018-03-08
            相关资源
            最近更新 更多