【问题标题】:Outputed py2exe exe won't run only when signed: ImportError输出的 py2exe exe 仅在签名时不会运行:ImportError
【发布时间】:2011-08-25 23:36:35
【问题描述】:

所以,我有一个我在 python 2.6 中制作的程序,它像普通的 python 一样运行良好,并且通过 py2exe v0.6.9 制作成 exe 时运行良好。我使用 signtool 对其进行签名,没有进行任何其他更改,它停止工作。

当我运行签名的 exe 时,我从脚本的第 1 行收到“ImportError: No module named os”。我做了一些挖掘,发现了这个:http://osdir.com/ml/python.py2exe/2008-04/msg00031.html,这似乎是对我的问题的非常接近的描述。尽管我运行的是 py2exe 0.6.9 而不是 0.6.6,但我手动将从 py2exe 网站链接到的补丁应用到我的 build_exe.py 文件中,因此我尝试将其考虑在内。还是没有爱。

根据链接,这似乎是一个 py2exe 问题。不过我不知道。任何帮助将非常感激。当然,我会回答您对此提出的任何其他问题。感谢您的帮助!

【问题讨论】:

  • 解决方法如下(不使用py2exe!)。问题是 py2exe 需要一个 ZIP 存档,其中包含可执行文件末尾的包含模块。 signtool.exe 在文件末尾添加了更多数据,因此 py2exe 无法读取存档,因此无法导入任何模块。
  • 这很有道理,感谢您的解释。

标签: python code-signing py2exe signtool


【解决方案1】:

如果是 py2exe 问题,也许可以尝试使用较新的 PyInstaller 来构建您的可执行文件。它正在积极开发中,不像 py2exe 自 2008 年 11 月 16 日以来显然没有更新。

【讨论】:

  • PyInstaller 看起来很不错,但我还没有让它与这个程序一起工作,因为它使用了 PySide。还有哪些其他打包系统可以生成可以签名的 exe,如果已知它们可以很好地与 pyside 一起使用,那就更好了? cx_freeze 安全吗?
  • @Joe,我用过 cx_freeze。它使用起来非常简单,但我不能保证它可以与 PySide 一起使用。什么意思,安全吗?
  • @Velociraptors,我的意思是,我可以签署用 cx_freeze 制作的 exe,让它们仍然可以工作吗?
  • 我之前在哪里遇到了 PyInstaller 问题,我错了,PySide 与它无关,实际上是无缝集成的。问题解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多