macos 上的 Pyinstaller 无法使用 --add-binary 加载库

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

我有一个 macOS 开发虚拟机,并且使用 pyinstaller 4.0 构建工作正常。

一旦我更新 pyinstaller 4.0 以外的任何版本,它就无法加载构建 pyinstaller 时位于应用程序文件夹中的自定义 *.dylib 文件。

我使用brew安装了python。

我正在用它来构建:

/usr/local/opt/[email protected]/bin/python3.8 -m PyInstaller --add-binary *.dylib:. --clean --windowed --onedir --noupx --name "$AppName" --icon=main.icns main.py

我有这个将程序路径添加到系统 PATH 并记住这适用于 pyinstaller 4.0:

dllpath = os.path.dirname(os.path.realpath(sys.argv[0]))
if dllpath not in os.environ:
    os.environ["PATH"] += os.pathsep + dllpath

但是一旦 pyinstaller 的版本大于 pyinstaller 4.0,它就会显示

cannot load library...

我也尝试安装最新版本的 python 和 pyinstaller 但遇到了同样的问题!

有什么建议吗?

python python-3.x macos pyinstaller dylib
1个回答
0
投票

所以在我的例子中,dylib 文件与脚本位于同一路径中。

在 macOS 上,我们需要添加“DYLD_FALLBACK_LIBRARY_PATH”env,以便脚本加载 lib 文件。

因此在导入 cairosvg 之前,我们需要这样做:

import os
import sys
# load dlls used by cairo
app_path = os.path.dirname(os.path.realpath(sys.argv[0]))
os.environ["PATH"] += os.pathsep + app_path  # for Windows
os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = app_path  # for macOS
os.environ["LD_LIBRARY_PATH"] = app_path  # for Linux
© www.soinside.com 2019 - 2024. All rights reserved.