星期五, 11月 09, 2012

程式專題之一:Part-1:py2exe 的小問題

經過2週和程式的奮鬥,基本上我那個程式是完成了。
但是程式是要給別人用的,所以就只好打包成exe檔。

python自己沒有compile成exe的功能。還好有人寫了py2exe的程序來做這件事。研究了一下,這位Victor寫的進階教學還算不錯,只是它打包的是程式本身,程式呼叫的DLL檔是沒打包起來的。

尤於我用的是python 2.7.2版,直接上py2exe的官網下載並且安裝。這個過程中出現了一個小插曲,py2exe的官網上直接給的是for python 2.6的py2exe,所以要再去它的下載目錄中找出for 2.7的py2exe來裝才可以。

那,程式呼叫的DLL檔要怎麼辦?只好再上網找答案。還好我是新手,新手會遇到的問題應該都不難。很快的在Frank的五四三就找到答案了。基本上在setup這個裏面要把參數設進去即可。這樣弄好,本來約200行的程式(我是新手,程式寫得很髒,行數很多,而且註解也很多),compile起來約有7M。

接著拿去別的電腦測測看,嗶嗶~~ERROR。跳出一個message說程式沒裝好???只好再拜google大神了。大神指示往pyodbc去找答案。果然,答案就在網路中。這個問題是因為py2exe不認識我import的pyodbc,必須在setup中加個options來指定,如下:
setup(
options = { "py2exe": { "includes": "decimal, datetime" } })
如果有有指定別的option了,可以用"逗號"分開。

想說,這樣應該好了吧。一執行,哇咧,為什麼又有錯誤,還有log檔給我。這次有錯誤訊息了,表示至少程式有跑到,而錯誤訊息是:
EOFError: EOF when reading a line
。還是來問Google大神吧。還好,還不是很難的問題,大神這次指示往這兒去,會遇到貴人。果然,又是個小問題,原來之前的Victor大大功力太高,都寫GUI的程式,不像小弟我的處女作只是在CONSOLE上跑。所以要把SETUP中的
window = [{'script': "python.py"}],
改成
console = [{'script': "python.py"}],

終於........
休息了,真好!

沒有留言:

//for syntaxhighlighter 3 //看一下載入的JS模組有哪些,不要的就刪掉 //end syntaxhighlighter 3