0

我正在制作我的应用程序的 py2exe 版本。Py2exe 无法复制一些模块。我的原始应用程序加载.png文件很好,但 exe 版本没有:

Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from gui.main import run
  File "gui\main.pyc", line 14, in <module>

  File "gui\controllers.pyc", line 10, in <module>

  File "gui\utils\images.pyc", line 78, in <module>
    ☺
  File "gui\utils\images.pyc", line 70, in GTK_get_pixbuf
    ☺§☺▲☻
  File "gui\utils\images.pyc", line 38, in PIL_to_pixbuf

gobject.GError: Image type 'png' is not supported

知道我应该强制 py2exe 包含什么吗?

4

3 回答 3

4

这是PILpy2exe的已知问题

PIL(python 图像库)动态导入它的插件,py2exe 不支持,所以它不包含 .exe 文件中的插件。

修复(希望如此!)是在您的 .py 文件之一中明确导入驱动程序

import Image
import PngImagePlugin
Image._initialized=2

这意味着 py2exe 肯定会包含该插件。该Image._initialized位停止 PIL 扫描更多插件。

以下是来自 py2exe wiki 的文档,完整地解释了这一点

于 2009-10-02T22:06:56.153 回答
2

这是什么平台?最近我认为他们改进了 windows 上的 png 支持,所以你使用的 pygtk 版本也是相关的。 http://aruiz.typepad.com/siliconisland/2008/02/goodbye-zlib-li.html

于 2009-10-02T21:38:45.070 回答
2

确保在安装应用程序时捆绑加载程序。Py2exe 不会知道这些,但它们是 GTK 的必需部分,并且位于其余 GTK“数据”文件所在的位置。

来自http://unpythonic.blogspot.com/2007/07/pygtk-py2exe-and-inno-setup-for-single.html

仅仅让 py2exe 拉入 GTK DLL 进行打包是不够的(它非常成功)。GTK 还需要一些数据文件,包括主题、翻译等。这些需要手动复制到 dist 目录中,以便应用程序在运行时可以找到它们。

如果您查看您的 GTK 运行时目录(通常类似于 c:\GTK),您会发现这些目录:share 等,lib。运行 py2exe 后,您需要将所有这些复制到 dist 目录中。

版权保留。

于 2009-10-16T18:24:36.093 回答