ModuleNotFoundError:安装python 3.7后没有名为“apt_pkg”的模块

Nan*_*nna 3 apt python3 18.04

我最近使用以下命令在 Ubuntu 18.04.4 LTS 机器上安装了 python 3.7:

sudo apt-get install python3.7
Run Code Online (Sandbox Code Playgroud)

我还运行了以下命令,因为我希望 python 3.7 运行为python3

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
Run Code Online (Sandbox Code Playgroud)

随后我按照一个建议来运行这个:

sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试启用universe存储库 ( add-apt-repository universe) 时,出现以下错误:

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 28, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Run Code Online (Sandbox Code Playgroud)

我找到的大多数答案都告诉我python3-apt这里这里一样重新安装,但这不起作用。

我还能尝试什么?

编辑:

这里这里还有一些建议,特别是指向 python 的 dist 安装,这是 Ubuntu 18.04 的 3.6 版。这样做安全吗?这个python不能在某个时候升级吗?

Nan*_*nna 7

事实证明,我的解决方案并不是完全解决为什么apt-pkg找不到模块的原因,而是了解将另一个版本的 python 安装到 Ubuntu 而不是发行版的注意事项。

我最终删除了我添加的将 python3 指向 python3.7 的替代方法

sudo update-alternatives --remove-all python3
Run Code Online (Sandbox Code Playgroud)

而是将符号链接修复为再次指向原始 3.6,与 Ubuntu 18.04 一起分发

sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

此外,现在我将使用该命令python3.7处理我需要 Python 3.7 的所有内容,这基本上只是创建我的 virtualenv,所以它不是那么麻烦。

学过的知识!