python-3.x gobject-2.0-0无法在macbook上加载

toiithl6  于 2022-12-15  发布在  Python
关注(0)|答案(4)|浏览(283)

当我在Python3和Mac OS上启动我的 flask 应用程序时,我面临着这个错误:
操作错误:无法加载库“gobject-2.0- 0”:稀释剂(目标-2.0 -0,2):找不到映像。此外,ctypes.util.find_library()无法找到名为“gobject-2.0-0”的库
我在我的项目中使用weasyprint,这导致了这个问题。
我尝试安装glib,它安装在我的系统中。

kmpatx3s

kmpatx3s1#

我刚刚在我的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.**如果使用homebrew安装python,则不会出现此问题。

xeufq47z

xeufq47z2#

要详细说明有关Apple Silicon(M1)Mac的现有答案:
如果您已经安装了Homebrew的软件包,但仍然没有在/usr/local/lib下找到或链接它们,这是因为它们安装在arm64上,而在/opt/homebrew/lib下找到。
如果你使用的Python是安装在Homebrew上的,那么它应该不需要任何额外的工作就可以工作,但是系统Python和任何托管Python版本(例如安装在Pyenv上的)都需要一些配置。

1.手动符号链接

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

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

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

2.环境变量

很多答案都指向设置一些环境变量,比如LDFLAGSDYLD_LIBRARY_PATH来添加库的搜索路径,但是根据我的测试,这些环境变量不适用于Python:
macOS自带系统完整性保护(SIP),它可以清理子进程中的环境变量,例如Python。任何以LDDYLD开头的内容都将被清除,因此在终端配置文件中设置环境变量将不起作用。
你可以Disable SIP来让这些工作,但苹果建议只在需要的时候暂时这样做。
如果你决定走这条路,这里有几个选择:
在Homebrew的Github discussions中,通过设置LDFLAGS回答了这个问题:

export LDFLAGS=-L/opt/homebrew/lib

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

export DYLD_LIBRARY_PATH=/opt/homebrew/lib
iqih9akk

iqih9akk3#

如果你在你的虚拟环境中安装了weasyprint软件包,但是没有安装一些必需的软件包,那么这可能就是原因,在我的例子中确实是这样。
如果你是mac用户,你需要安装pangolibffi,更不用说python了。
mac上的安装指南

brew install python pango libffi
(venv) pip install weasyprint
qnzebej0

qnzebej04#

我在自制程序更新后也遇到了同样的问题。原来这个问题是因为旧的pango lib版本。
我做了brew install pango
这将pango库从1.48.2升级到1.50.4,内部安装了gobject的最新版本作为dep。

相关问题