2012年1月29日 星期日

py2exe 的使用方法 教學

    以下這篇文章是從網路別人的文章改(抄、複製)過來的,這裡是記錄我所找過的資料,以便下次可以不用再找尋,如有侵犯的地方請告知,謝謝!!
參考網址:
http://ez2learn.com/index.php/python-tutorials/advance-tutorials/176-py2exepythonexe
http://www.chinaunix.net/jh/55/608594.html
http://jimmynote.blogspot.com/2010/03/using-py2exe.html

--------------------------------------------------------------------------------------------------
py2exe 使用 教學

介紹
py2exe是一個工具程式,可以將python程式轉換成為單一的執行檔案。
初級篇
1.官網下載py2exe程式

2. 安裝py2exe

3. 在你要打包的檔案同一個目錄下,新增一個名為setup.py的檔案,內容為:
from distutils.core import setup  
import py2exe  

setup(console=['???.py'])
   其中, ???.py 就是你要打包的檔案名稱,例如 hello.py

4. 完成後存檔

5. 接著 開始 -> 執行 -> cmd

6. 切換到你要打包的檔案的目錄下,EX:
    在cmd裡輸入 cd /d G:\program\python\src
    其中 cd 是進入資料夾的指令
             /d  是可以切換到其它磁碟的參數

7. 在cmd裡再輸入 python setup.py install

8. 在cmd裡再一次輸入 python setup.py py2exe
    如果有發現缺少什麼dll檔,可以參考這篇,或是其他問題,請參考參考網址的第一個網站!

9. 然後你可以發現有build和dist兩個資料夾在你的目錄下,其中dist的???.exe就是我們要的執行檔,以步驟3為例就是hello.exe囉!

    PS:如果想要將程式移到沒有安裝Python直譯器的環境下執行,只要將dist下的所有檔案複製過去然後再執行.exe檔就可以了

10.***密技***不知道各位有沒有覺得每次再做5-8的步驟的時候都感覺好麻煩,有沒有更快的方法呢?當然有拉,只要把以下的程式存成bat檔,點2下bat檔就可以執行5-8的步驟囉!
@echo off
echo 開始編譯程式
cd /d G:\program\python\src
python setup.py install
python setup.py py2exe
pause
當然第3行要改成你自己的目錄。另外如果檔名不知道怎麼取的話就取"make.bat"吧!

進階篇
1. 一般的情況下都是用console,如果我今天是用wxpython做視窗的話,那我的console就要改成windows
setup(windows=['???.py'])

2. 若要一次產生多個執行檔,只要將多個 script 檔名以 list 方式傳給 setup() 即可:
setup(console=["hello.py", "hello1.py", "hello2.py"])

3. 亦可以同時產生 console 和 windows 程式:
setup(console=["hello.py", "hello1.py"], windows=["hello2.py"])

4. 應用程式有時會使用到一些外部檔案,例如設定檔,字型或是圖檔,透過 setup() 的 data_files 參數,可以將這些額外的檔案加入發佈目錄中。將一個或多個 (目的目錄, [來源檔 1, 來源檔 2...來源檔 n]) 形成的 tuple,包裝成 list 指派給 data_files參數即可:
setup(console=["hello.py", "hello1.py"], windows=["hello2.py"],
     data_files=[("img",
                  [r"d:\documents\matrix.jpg",
                   r"d:\documents\Batman.jpg"]),
                 ("xml",
                  [r"D:\tmp\mypaint.xml",
                   r"D:\tmp\mypuzzle.xml",
                   r"D:\tmp\mypuzzle1.xml"])])
  產生之後的 dist 目錄中,應該會有一 img 目錄,內含 matrix.jpg 和 batman.jpg 兩個檔案,以及 xml 目錄,內含三個 xml 檔案。
  另外 py2exe 還提供了包裝成 windows service 和 COM server 的功能,由於目前有用到所以有研究。另外 Python 的 GUI toolkit - Tkinter 亦可正常使用,只是包裝後會多出 2MB 多的 Tkinter runtime,讓程式瞬間增肥許多...但,誰管這麼多呢?能夠讓別人也用用自己寫的 Python 程式,肥一點也無所謂囉!

5. 壓縮檔案,如wxpython的lib,可以參考官方文件

6. 更多的範例與使用http://www.dev.idv.tw/mediawiki/index.php/Py2exe%E7%B0%A1%E4%BB%8B

1 則留言:

  1. 請問一下,如果說要將打包好的exe程式安裝在raspberry pi 3b 平台上執行可以嗎?因為目前看到的打包執行檔方式大多僅可以在 window上使用? 謝謝

    回覆刪除