gobject-2.0-0 无法在 macbook 上加载

问题描述 投票:0回答:7

当我在 Python3 和 Mac OS 上启动 Flask 应用程序时遇到此错误:

OSError:无法加载库“gobject-2.0-0”:dlopen(gobject-2.0-0, 2):找不到图像。此外,ctypes.util.find_library() 无法找到名为“gobject-2.0-0”的库

我在我的项目中使用

weasyprint
导致了这个问题。

我尝试安装

glib
,它已安装在我的系统中。

python-3.x flask glib weasyprint macbookpro-touch-bar
7个回答
42
投票

我刚刚在我的 Mac M1 上解决了同样的问题。

问题是没有创建到库的符号链接(不能说安装时应该由 homebrew 或 weasyprint 完成)。

所以,我必须手动完成

sudo ln -s /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib /usr/local/lib/gobject-2.0
sudo ln -s /opt/homebrew/opt/pango/lib/libpango-1.0.dylib /usr/local/lib/pango-1.0
sudo ln -s /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib /usr/local/lib/harfbuzz
sudo ln -s /opt/homebrew/opt/fontconfig/lib/libfontconfig.1.dylib /usr/local/lib/fontconfig-1
sudo ln -s /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib /usr/local/lib/pangoft2-1.0

这解决了问题。

为了测试 Python 是否可以找到您可以运行的库

from ctypes.util import find_library

find_library('gobject-2.0')  # Pass any other lib name as an argument

UPD。如果你用

python
安装
homebrew
就没有这个问题。


6
投票

如果您在虚拟环境中安装了

weasyprint
软件包,但没有安装一些必需的软件包,那么这可能就是原因。事实上,就我而言。

如果你是 mac 用户,你需要安装

pango
libffi
,更不用说 python 了。

Mac 上的安装指南

brew install python pango libffi
(venv) pip install weasyprint

6
投票

扩展 Apple Silicon (M1) Macs 上的现有答案:

如果您已经使用 Homebrew 安装了软件包,但在

/usr/local/lib
下仍然找不到或链接它们,那是因为它们安装在 arm64 上,而是在
/opt/homebrew/lib
中找到。

如果您使用的是通过 Homebrew 安装的 Python,它应该无需任何额外工作即可工作,但是系统 Python 和任何托管 Python 版本(例如通过 Pyenv 安装)将需要一些配置。

1.手动符号链接

您可以链接

/usr/local/lib
内容(只要您没有现有的
/opt/homebrew/lib
目录),而不是将每个库单独链接到
/usr/local/lib

sudo ln -s /opt/homebrew/lib /usr/local/lib

只要您正在寻找的库不是来自仅桶式配方(这些配方必须单独链接),这就可以工作。

2.环境变量

很多答案都指向设置一些环境变量,例如

LDFLAGS
DYLD_LIBRARY_PATH
来添加库的搜索路径,但根据我的测试,这些不适用于 Python:

macOS 附带系统完整性保护 (SIP),它可以清理子进程中的环境变量,例如 Python。任何以

LD
DYLD
开头的内容都将被清除,因此在终端配置文件中设置环境变量将不起作用。

您可以禁用 SIP 来让这些功能正常工作,但 Apple 建议仅在需要时暂时这样做。

如果您决定走这条路,这里有一些选择:

在 Homebrew 的 Github 讨论中 通过设置

LDFLAGS
回答了问题:

export LDFLAGS=-L/opt/homebrew/lib

同样,您可以将必要的路径添加到

DYLD_LIBRARY_PATH

export DYLD_LIBRARY_PATH=/opt/homebrew/lib

1
投票

自制程序更新后我遇到了同样的问题。事实证明,问题是由于较旧的

pango
lib 版本造成的。

我做到了

brew install pango

此升级了

pango
lib,从 1.48.2 -> 1.50.4,内部安装了 gobject 的最新版本作为 dep。我的问题得到了解决。


0
投票

当我尝试在 Django 项目上使用

weasyprint
时,我遇到了同样的问题。

如果您使用的是 macOS,只需运行以下命令:

brew install pango

0
投票

对于任何面临此问题并且同时使用 Pyenv 和 Homebrew 的人来说,最新的 Homebrew 有一个新命令

brew pyenv-sync
。这会将所有 Homebrew 安装的 python 版本同步到 Pyenv。


0
投票

对我来说,只有这个建议有帮助:

brew install pango
brew install glib
brew link glib
© www.soinside.com 2019 - 2024. All rights reserved.