无法导入名称“_gi”

Hug*_*ohm 20 python ubuntu pi

我正在尝试使用add-apt-repository命令将存储库添加到 ppa,_gi但未找到来自 Python的模块。

我做了这个命令: sudo add-apt-repository ppa:s-mankowski/ppa-kf5

这是回溯:

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 67, in <module>
    from gi.repository import Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
    from . import _gi
ImportError: cannot import name '_gi' from 'gi' (/usr/lib/python3/dist-packages/gi/__init__.py)
Run Code Online (Sandbox Code Playgroud)

我在使用 Python3.7 的 Ubuntu 上,我尝试了很多解决方案,但它不起作用:

$ cd /usr/lib/python3/dist-packages
$ sudo ln -s apt_pkg.cpython-{36m,37m}-x86_64-linux-gnu.so

$ cd /usr/lib/python3/dist-packages/gi
$ sudo ln -s _gi.cpython-{36m,37m}-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

我不能使用该sudo add-apt-repository ppa:s-mankowski/ppa-kf5命令,而是运行带有python3 {file}作品的 Python 文件。

谢谢您的帮助 !

小智 26

感谢Wilhelm 的评论,我发现解决方案是:

sudo ln -s /usr/lib/python3/dist-packages/gi/_gi.cpython-{36m,37m}-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

这对我在 Ubuntu 上使用 Python 3.7 有效。

  • 您能否简要解释一下如何解决该问题? (2认同)
  • 这对我也有用。我安装了 python 3.7 和 3.8 并遇到了同样的问题。将“{36m,37m}”替换为“{35m,37m,38}”会创建“37m”和“38”的两个符号链接。这允许我再次打开“gnome-terminal”。 (2认同)

M. *_*ler 22

Ubuntu 不喜欢从 python 3.7 切换它的默认解释器。

因此,通过使用将其切换回 3.6

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

之后尝试安装gi软件包:

sudo apt install python3-gi
Run Code Online (Sandbox Code Playgroud)

  • 一个让它与 python3.7 一起使用的 hacky 修复`sudo ln -s /usr/lib/python3/dist-packages/gi/_gi.cpython-{36m,37m}-x86_64-linux-gnu.so` (18认同)

Sou*_*uza 14

这是一个老问题,但如果有人需要快速解决方案,这并不意味着在任何地方更改默认的 Python 版本,只是:

sudo python3.6 /usr/bin/apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
Run Code Online (Sandbox Code Playgroud)


小智 5

这两个步骤可能对你有帮助

$ cd /usr/lib/python3/dist-packages/gi
$ sudo ln -s _gi.cpython-{36m,37m}-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)