编译py2exe PyQt4程序没有读到jpg'档

时间:2015-03-15 14:20:56

标签: python file pyqt4 py2exe

程序显示png文件,但不显示jpg文件。
我的程序截图,使用png / jpg文件:
png http://i.stack.imgur.com/xw4vQ.png
jpg http://i.stack.imgur.com/R5T9q.png
如果没有用py2exe编译,程序正常工作并显示所有格式。
所以我认为这是py2exe的问题。


我在这两种情况下都有这个代码:
picQLabelpicLineLayout}

px = QtGui.QPixmap(pic_src)
pic.setPixmap(px)
picLine.addWidget(pic)

尝试px.isNull() - 返回True
所以px在某种程度上是空的 python文件的负责人:

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
import os, pyaudio, wave

setup.py:

from distutils.core import setup
import py2exe

setup(
    name="name",
    version="1",
    author="Columpio",
    windows=[{"script": "name.py",
              "icon_resources": [(0, "icon.ico")]}],
    data_files=[<here long list of files goes>],
    options={"py2exe": {"includes": ["os", "sip", "sys", "PyQt4", "pyaudio",
                                     "wave"],
                        "optimize": 2,
                        "bundle_files": 2
                        }
             },
    zipfile=None
    )

抱歉可怕的问题风格 - 我现在病得很厉害。

1 个答案:

答案 0 :(得分:0)

可以肯定的是,这里的问题是Python解释器中的PyQt代码可以看到QT图像格式插件,但py2exe构建的可执行文件不能。这些插件位于Python site-packages目录中的目录plugins中。

这很容易解决:最简单的方法就是将imageformats目录复制到与可执行文件相同的目录中。

我在setup.py中使用此代码但这适用于PySide。我认为PyQt4或多或少相同:用PyQt4代替PySide:

ifpath = os.path.join(sys.prefix,"Lib","site-packages","PySide","plugins","imageformats")

distutils.dir_util.copy_tree(ifpath,dist_dir)