py2exe打包在Windows7上的图标问题

       最近开始学习Python,不禁被他的强大折服。

       不过在Linux上写出来的一些小工具总是需要分享给其他人使用的,尤其是在没有安装Python解释器的Win平台上。于是就出现了一系列打包工具,最近发现py2exe可以支持打包成单一文件,这可是相当有诱惑力的~,回想之前用的cx_Freeze虽然也很强大,但貌似不能打包成单一文件,这也就意味着把小工具拷给别人的时候是一大坨文件,包括各种dll的库,瞬间档次低了很多啊啊啊

       综上所述,尝试使用py2exe打包Python文件,setup.py的编写神马的网上一搜一大把,就不详细说明了,有机会的话之后我会整理一个完整的blog来说明其参数和编写,这部分不是此文重点,代码贴在最下面,有需要的童鞋可以看一看


       本文的关键点来了,明明指定了文件图标,但生成的文件确是无图标的wKiom1NUiO6Tl87BAAAfhDuAkqQ095.pngj_0004.gif

绝对不能忍受!!!图标文件应该是没问题的啊,在XP(虽然他老人家已经退休了j_0009.gif)上图标现实也是正常的啊

       经过一串的谷哥度娘,发现是由于Win7和XP在处理ico文件上是有区别的,问题关键在于ico文件中图标的顺序问题,XP和server 2003对顺序要求不高,无论是图标是按尺寸的正序还是倒序都可以正常显示,而在vista/win7下确只能倒序,故出现了上述的问题。

       经过紧张的调序工作(使用软件GreenfishIconEditorProPortable),结果顺序如图,终于可以显示(ResHacker)了,截图如下(忽略我家MiKu小妹妹~):

wKiom1NUjIiDwA4pAAATnnBYCMU410.pngwKioL1NUjO_goEqVAAAOPUIm1fw657.png

       感觉还不错呢j_0011.gif。。。等等。。。。。怎么有种不详的预感。。。。。尼玛,坑爹啊j_0004.gif,明明有放256的大图啊,为什么不给劳资显示大图呢!!!

wKiom1NUjlzju-ZDAAATKwtGFng614.png

       镇定下来思考一下j_0010.gif,直接研究一下现有的能显示大图标的exe不就OK了,于是我随手打开了一个,如下图,我擦嘞,竟然还有256色的图!于是重新制作ico文件

wKiom1NUj7WjNuakAAAdy6sAxsA734.png

       替换后,呼~终于看到大图的MiKu小妹妹啦~~

wKiom1NUlqSgyLW0AAAy89SENVg893.png

       done.j_0003.gif


PS:关于此问题在stackoverflow上已经有过讨论,点我跳转



setup.py文件源码

# -*- coding: utf-8 -*-
__author__ = 'Moore.Huang'
from distutils.core import setup
import py2exe
includes = ["encodings", "encodings.*"]
options = {"py2exe": {"compressed": 1, "optimize": 2, "includes": includes, "bundle_files": 1}}
setup(
version = "0.1.0",
description = u"[程序描述]",
name = "FormatTable",
options = options,
zipfile = None,
# 生成有指定图标的exe
windows = [{"script": "[源码文件名].py",
            "icon_resources": [(1, u"[图标名].ico")]
           }]
# 生成无图标exe
# windows = [{"script": "[源码文件名].py"}]
)




你可能感兴趣的:(python,windows7,图标,py2exe)