將自己的python程式打包成.exe/.app(秀同學一臉吶)
Windows 10 x64
macOS Sierra 10.12.4
Python 2.7
準備好裝嗶~了麼,來吧,做個真正意義上的綠色小軟體
Win下發布應用
起因
今天實驗室同學看到我的乞丐版二輸入規則器,他挺感興趣的,也想要玩玩,但是他沒有裝python的環境,總不能讓他一直玩我電腦吧,所以想到了將程式打包成exe,直接執行!想法一出來,根本擋不住啊,說幹就幹,先百度python打包exe,一大堆答案,我整理了一下,大概有Py2exe和pyinstaller兩種,但是,我給你看張圖
這是多久前的產品啊,我屮艸芔茻,如果你執意要用這個請移步,然後自己去玩把,反正我下了之後,根本跑不起來
安裝pyinstaller
安裝方法
方法一:使用
pip install pyinstaller
,也可以參考: python如何安裝第三方包,方法二:如果是下載github上的包之後手動安裝,那麼步驟是
- 開啟cmd,切到pyinstaller解壓包目錄,我直接放在c盤目錄下了,所以我的操作是
cd C:\pyinstaller-develop
- 安裝pyinstaller,我的操作是
進目錄後輸入python setup.py install
包下載
程式打包
先將需要打包的程式,我用自己的Tkint.py檔案(自己python檔名字自己修改),把它複製到步驟1的目錄下,也就是上面的
C:\pyinstaller-develop
然後使用命令:pyinstaller -F Tkint.py
(建議使用)
注意:如果執行的是gui型別程式,你不需要彈出命令視窗,你可以採用:pyinstaller -F -w檔名.py
之後你的命令窗就會跑半分鐘左右,跑完之後是這樣的;
打包好的Tkint.exe已經在該目錄下的dist資料夾中了。如果成功,應該多了這兩個資料夾
dist裡面是這樣的
然後你就可以拿去給別的機器測試你的程式啦,哈哈哈哈哈
注意: 在同學win8/win10,64位機器上可以執行,win7 x64和其餘所有32位親測失敗,會提示不相容,所以說,如果要32/64通吃,就要在python 32位環境下(不是win32位)編譯打包exe,才能在32/64成功。
BTW
但是,如果你使用
pyinstaller -F -w檔名.py
在別的電腦執行你的exe檔案時候你看不到命令視窗,你會認為程式沒有執行,打包後的exe比較大,以我的Tkint.py來說,160行的程式,打包後61MB,額,我直接插在U盤上在別的電腦執行,大概需要半分鐘左右才能跑起來,所以請慢慢等待。。。。如果你還要改圖示,建立目錄啥的,請使用pyinstaller -h
來檢視引數
補充
2016.7.7補坑: 基於python的參考文獻生成器beta已完成,歡迎下載和使用免費下載基於python的文獻生成器.exe
2016.7.8補充: 利用Pyinstaller編譯關聯檔案成exe,只要輸入時候寫成
pyinstaller -F main.py related.py
即可,其中main為主函式,其中有import related.py的函式,只要把重要的放前面就好啦,然後最後的exe檔名會以第一個命名,也就是最後形成一個main.exe就是醬紫。修改spec檔案,重新加上引數再編譯。按照正常步驟做過之後,在目錄中還會有一個spec檔案,用編輯器開啟,之後修改引數,儲存後,在原來操作的cmd上寫入:pyinstaller main.spec
即可,這個是我在gui影象生成exe格式時候,圖片無法打包查閱到的,需要單獨新增
Mac下發布應用
安裝py2app
pip install py2app
打包程式
首先在桌面新建一個資料夾,我這裡名字為transapp,然後把要打包的程式放在裡面,我這裡要打包的是translate.py檔案,自己的資料夾和檔名字自己響應替換
- 進入終端,切路徑至該資料夾下
cd ~/Desktop/transapp
- 開始產生初始化檔案
py2applet --make-setup translate.py
- 保險起見,清除以前產生的build和dist資料夾,第一次操作這兩個資料夾是沒有的
rm -rf build dist
- 開始打包應用
python setup.py py2app
這時候會開始執行打包過程,最後大概是這樣的
...
Modules not found (conditional imports):
* _md5 (hashlib)
* _sha (hashlib)
* _sha256 (hashlib)
* _sha512 (hashlib)
* com (pkg_resources._vendor.appdirs)
* com.sun.jna (pkg_resources._vendor.appdirs)
* com.sun.jna.platform (pkg_resources._vendor.appdirs)
* riscospath (os)
* win32com (pkg_resources._vendor.appdirs)
* win32com.shell (pkg_resources._vendor.appdirs)
Done!
- 找到自己的資料夾,然後裡面應該有dist資料夾,開啟后里面有個app,雙擊即可。
測試時候, py2app版本0.14,macos版本10.12.14,測試通過,最後效果圖如下所示
更新
- 2016.07.06 更新 win下發布應用
- 2017.07.26 跟新 mac下發布應用