【发布时间】:2020-02-22 02:13:37
【问题描述】:
我呼吁 StackOverflow 的力量,我可以部署这个软件!
本软件使用 ctypes.cdll.LoadLibrary 加载 dll。部署时(由 py2exe 破坏),dll 被隐藏在包含目录结构的 zip 中。 dll 在这个结构中有几个层次。 (我不确定这是否是相关细节。)LoadLibrary 失败,因为它找不到 dll,因为它的路径是 ...\site.zip\app\dll32\lfx.dll。
我在 SO 或 Google 上找不到任何相关信息。我正在考虑对 LoadLibrary 调用执行 try-except,并在 except 块中检查给定路径是否引用压缩位置,解压缩并重试。
有没有更优雅的方式从 zip 加载 dll?
【问题讨论】:
-
为什么 .dll 在 .zip 中? .py 调用它的脚本不是也在那个.zip 中吗?您需要提供更多详细信息。如果整个事情在 Py2Exe 上下文之外工作,它应该在其中工作。
-
在这个项目中,依赖部分是通过将项目分成包来管理的。主包依赖于另一个包装 .dll 的包。依赖包使用基于
__file__的相对路径来定位和加载.dll。使用 py2exe 上的 --bundle 2 选项,依赖包 - 以及 .dll - 最终出现在 .zip 文件中。所以相对路径最终是上面提到的形式,无法加载ctypes.cdll.LoadLibrary()。
标签: python python-2.7 zip ctypes