PyGObject、venv 和 Ubuntu 20.10:ImportError:libffi.so.7:无法打开共享对象文件:没有此文件或目录

PyGObject、venv 和 Ubuntu 20.10:ImportError:libffi.so.7:无法打开共享对象文件:没有此文件或目录

从 Ubuntu 20.04 更新到 Ubuntu 20.10 后,我无法在 Python 虚拟环境上运行 PyGObject 应用程序。

我可以按照以下简单步骤重现该问题:

sudo apt-get install python3-venv
python3 -m venv venv
source env/bin/activate
pip install PyGObject==3.38.0
python3 hw.py

hw.py标准 PyGObject Hello World 在哪里:

#!/usr/bin/env python3

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

window = Gtk.Window(title="Hello World")
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()

当我尝试运行它时,它会引发此错误:

$ python3 hw.py 
Traceback (most recent call last):
  File "hw.py", line 3, in <module>
    import gi
  File "/home/leinardi/temp/hw/venv/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module>
    from . import _gi
ImportError: libffi.so.7: cannot open shared object file: No such file or directory

hw.py在系统环境上运行正常(该问题仅在使用虚拟环境时发生)。

一种解决方法是找到并提供一份副本libffi.so.7/usr/lib/x86_64-linux-gnu/但是,由于此库版本在 Ubuntu 20.10 的官方存储库中不可用,因此这是一个困难且不安全的操作。

答案1

我在 libffi.so.6 上遇到了类似的问题,但这是针对 20.04 的,请在此处查看我的解决方案https://stackoverflow.com/a/63329830/6881647

您可以从此处下载软件包,在 20.10 上尝试同样的事情 https://mirrors.edge.kernel.org/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb并安装它。这会将 2 个文件(libffi.so.7libffi.so.7.1.0)放入其中/usr/lib/x86_64-linux-gnu/,并且不会覆盖任何内容。

你能解释一下为什么你认为这很困难且不安全吗?这是一个简单的 deb 安装,至于不安全的部分,该软件包是由 Ubuntu 镜像提供的,而不是某些第三方或类似的东西。

相关内容