我有一个PySide应用程序,我正在转换为在Windows 7上运行的exe,没有任何依赖使用py2exe。
这是setup.py
的设置setup(windows=[{
"script" : "src/main.py",
"dest_base" : "xxx-setup-" + configuration.version,
"icon_resources": [(1, "images/xxx_icon.ico")],
"other_resources": [(24,1, manifest)]
}],
name='xxx',
data_files=[('imageformats',[r'C:\Python27\Lib\site-packages\PySide\plugins\imageformats\qico4.dll'])],
options={"py2exe" : {
"includes" : ["simplejson", "sip", "PySide.QtNetwork", "requests", "pysphere", "PySide.QtCore"],
"excludes" : ["Tkconstants", "Tkinter", "tcl"],
"dll_excludes" : ['w9xpopen.exe', 'MSVCP90.dll'],
"bundle_files" : 1,
"optimize": 2,
"compressed": True }},
zipfile=None,
**py2exe_options)
在src / main.py里面我有:
...
webAppDir = unzipResources()
app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
app.setWindowIcon(QtGui.QIcon('%s/images/xxx_icon.ico' % webAppDir))
window.setWindowIcon(QtGui.QIcon('%s/images/xxx_icon.ico' % webAppDir))
...
如果我将我的bundle_files更改为2并且在此处建议使用dll_excludes和data_files,则它可以正常工作并且图标显示在任务栏和窗口栏中:
https://stackoverflow.com/a/5643540/901641
Unforuntately,将bundle_files设置为2意味着python不包含在exe中,因此它要求用户安装python,这是不可接受的。那么,为什么窗口栏和任务栏图标没有正确设置?
编辑:进一步的实验表明,只需将bundle_files设置为3就可以完成这项工作,而无需更改dll_excludes或data_files。不幸的是,这意味着Python不包含在exe中,因此它要求用户安装Python,这也是不可接受的。
编辑2x:我尝试通过在setup.py中添加以下内容来扩展py2exe:
from py2exe.build_exe import py2exe as build_exe
class Extender(build_exe):
def copy_dlls(self, dlls):
dlls.append(r'C:\Python27\Lib\site-packages\PySide\plugins\imageformats\qico4.dll')
build_exe.copy_dlls(self, dlls)
py2exe_options={'cmdclass':{'py2exe':Extender},}
它将dll复制到临时构建目录中,但实际上并没有显示图像。