5-27 5,940 views
你是否有這樣的煩腦,用Python寫了一個很酷的程式,傳給你同學看卻因為他沒有裝Python直譯器,為了執行你這個小程式,他得安裝直譯器才能執行,更麻煩的還有第三方的模組要安裝,意願就大大的降低,同樣的,面對你的客戶,你總不能要求你的客戶安裝Python直譯器,然後用easy_install下載需要的模組,那會是很麻煩的事情,很多時候,我們希望Python像.exe檔一樣只要是Windows就可以執行,該如何解決?
注意:电脑提示找不到MSVPC90.DLL 网上下载一个 考到系统文件夹下就好
py2exe
所幸我們有現成的工具可以使用,叫做py2exe,它會將Python程式所需要的東西收集,並且打包成可以不用安裝直譯器就可以執行的.exe程式,以下我們就教你一步一步將Python程式打包成.exe檔
安裝py2exe
如果你有安裝easy_install,你可以直接在cmd下這樣的指令,就可以輕鬆地安裝py2exe,關於easy_install的教學可以參考這篇
- easy_install
py2exe
如果沒有的話,你可以直接從它的官方網站下載並且安裝
開始打包
首先,你需要建立一個這樣的python檔案,放在你想打包的python程式同一個目錄下
- from
distutils.core import setup - import
py2exe -
- setup(console=[‘python_file.py’])
其中的python_file.py請改成你要當做執行檔的python檔案名稱,例如我想打包test.py成為.exe檔,就將上面程式裡的python_file.py改成test.py,當完成之後,檔名存成setup.py,放在你python程式的同一個目錄下
接著,開啟 開始 -> 執行 -> cmd,也就是所謂的命令提示字元,然後切換到你專案所在的目錄,然後執行如下面指令
- cd
/d G:\Programming\Python\dstreamer\src\src\dist - python
setup.py install
完成之後,再執行以下指令
- python
setup.py py2exe
此時py2exe就會開始幫你收集你程式會用到的模組,並且打包好,如果沒有問題,執行完同一個目錄下應該會多出build和dist兩個資料夾,dist裡會有一個和你python檔案名稱一樣的.exe檔,那就是封裝後的.exe執行檔,而該目錄下的所有其它檔案,就是該執行檔所需要的模組和檔案所封裝成的檔案,因此如果想要將程式移到沒有安裝Python直譯器的環境下執行,只要將dist下的所有檔案複製過去然後再執行.exe檔就可以了
常見錯誤
有一個很常見的錯誤是,我成功地產生了.exe檔,也可以執行,但一執行就會產生找不到模組的錯誤,如下面所示範
- Traceback
(most recent call last): -
File “demo3.py”, line 7, in <module> -
File “base.pyc”, line 5, in <module> -
File “twisted\web\client.pyc”, line 16, in <module> -
File “twisted\web\error.pyc”, line 9, in <module> - ImportError:
No module named resource