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"}]
)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章