最近開始學習Python,不禁被他的強大折服。
不過在Linux上寫出來的一些小工具總是需要分享給其他人使用的,尤其是在沒有安裝Python解釋器的Win平臺上。於是就出現了一系列打包工具,最近發現py2exe可以支持打包成單一文件,這可是相當有誘惑力的~,回想之前用的cx_Freeze雖然也很強大,但貌似不能打包成單一文件,這也就意味着把小工具拷給別人的時候是一大坨文件,包括各種dll的庫,瞬間檔次低了很多啊啊啊
綜上所述,嘗試使用py2exe打包Python文件,setup.py的編寫神馬的網上一搜一大把,就不詳細說明了,有機會的話之後我會整理一個完整的blog來說明其參數和編寫,這部分不是此文重點,代碼貼在最下面,有需要的童鞋可以看一看
本文的關鍵點來了,明明指定了文件圖標,但生成的文件確是無圖標的。
絕對不能忍受!!!圖標文件應該是沒問題的啊,在XP(雖然他老人家已經退休了)上圖標現實也是正常的啊
經過一串的谷哥度娘,發現是由於Win7和XP在處理ico文件上是有區別的,問題關鍵在於ico文件中圖標的順序問題,XP和server 2003對順序要求不高,無論是圖標是按尺寸的正序還是倒序都可以正常顯示,而在vista/win7下確只能倒序,故出現了上述的問題。
經過緊張的調序工作(使用軟件GreenfishIconEditorProPortable),結果順序如圖,終於可以顯示(ResHacker)了,截圖如下(忽略我家MiKu小妹妹~):
感覺還不錯呢。。。等等。。。。。怎麼有種不詳的預感。。。。。尼瑪,坑爹啊,明明有放256的大圖啊,爲什麼不給勞資顯示大圖呢!!!
鎮定下來思考一下,直接研究一下現有的能顯示大圖標的exe不就OK了,於是我隨手打開了一個,如下圖,我擦嘞,竟然還有256色的圖!於是重新制作ico文件
替換後,呼~終於看到大圖的MiKu小妹妹啦~~
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"}] )