py2exe'd版本的GTK应用程序无法读取png文件

时间:2009-10-02 21:33:50

标签: python image gtk pygtk py2exe

我正在制作我应用的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吗?

3 个答案:

答案 0 :(得分:4)

这是PILpy2exe

的已知问题

PIL(python图像库)动态导入其插件,py2exe没有接收,因此它不包含.exe文件中的插件。

修复(希望!)是在你的一个.py文件中明确地导入驱动程序

import Image
import PngImagePlugin
Image._initialized=2

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

来自py2exe wiki的

Here are the docs完整地解释了这一点

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

  

仅仅制作是不够的   py2exe拉入GTK DLLs   包装(它做得很漂亮   成功)。 GTK还需要一个   包含的数据文件数   主题,翻译等。这些将   需要手动复制到   dist目录使应用程序   可以在跑步时找到它们。

     

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

版权保留。