gpt4 book ai didi

python - 在 Windows 上的 python 中使用 libarchive

转载 作者:可可西里 更新时间:2023-11-01 09:19:38 27 4
gpt4 key购买 nike

我正在尝试让 libarchive 模块在 Windows 上的 python 3.4 中工作。我已经用 pip 安装了 libarchive-c,一切正常,但每当我尝试将它导入我的代码或什至单独运行它时,我都会收到错误消息:

OSError: [WinError 126] The specified module could not be found

这来自以下代码的 ffi.py:

libarchive_path = os.environ.get('LIBARCHIVE') or find_library('archive') 
libarchive = ctypes.cdll.LoadLibrary(libarchive_path)

我以前从未使用过 ctypes,但如果我理解正确的话,它正在寻找外部 DLL。于是找到并安装了http://gnuwin32.sourceforge.net/packages/libarchive.htm我也已将 C:\Program Files (x86)\GnuWin32\bin 添加到环境变量中的 %PATH% 中,但它仍然无法加载模块。因为它没有给我名字,所以我不确定它在寻找什么模块。我错过了什么?

最佳答案

(免责声明)我为 https://github.com/Changaco/python-libarchive-c 做出贡献我维护 https://github.com/nexB/scancode-toolkit

两者都包含 libarchivectypes 绑定(bind),尽管 ScanCode 仅用于提取。

我在这里的回答是针对 python-libarchive-c,但是 ScanCode 包含一些您正在寻找的 DLL,所以我在两者中加入了一些。

要让 python-libarchive-c 在 Windows 上运行,您需要一个 libarchive DLL 及其可以加载的 deps。

python-libarchive-c 中没有捆绑预构建的 DLL,但我在这里为另一个项目预构建了 Windows 二进制文件: https://github.com/nexB/scancode-toolkit/tree/develop/src/extractcode/bin/win-32/bin相应的源代码在那里:https://github.com/nexB/scancode-thirdparty-src如果您想自己从源代码重建,那里有 MinGW32 构建说明:https://github.com/nexB/scancode-thirdparty-src/blob/master/libarchive/build.sh#L47

通常从路径加载 DLL——假设 var libarchive 包含该 DLL 的完整路径——使用这个:
lib = ctypes.CDLL(libarchive)
现在这是用于 Scancode 的。对于 python-libarchive-c,您可以尝试将 LIBARCHIVE 变量设置为指向 DLL 的路径:set LIBARCHIVE="C:\.....\libarchive.dll"

然后启动Python,导入库并使用。

注意:我还没有对此进行测试,但这应该可以。如果不是,请提交错误。我也没有在 Python 3.4 上运行任何测试。我主要使用 Python 2.7。但是 DLL 和代码根本不是 Python 2.7 特定的。

FWIW,scancode 加载库的方式更加吸引人,因为它可以使用常规位置从相同的代码加载 DLLs Win/Linux/Mac 用于特定的 32 或 64 位 archs。您可以在那里看到正在运行的代码: https://github.com/nexB/scancode-toolkit/blob/develop/src/extractcode/libarchive2.py#L64

ScanCode 尚未使用 python-libarchive-c ATM,而是使用不同的/自定义的 ctypes 绑定(bind),仅专注于更具体的提取用例。至少它可以让您访问 Win DLL 及其依赖项(或构建它们的指令)以及有关如何正确加载它的示例。

/HTH

关于python - 在 Windows 上的 python 中使用 libarchive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com