1. 程式人生 > >Python進階-打包程式為exe

Python進階-打包程式為exe

作業系統:win7 x64

執行環境:Python3.5

安裝PyInstaller

第一步:下載PyInstaller

https://github.com/pyinstaller/pyinstaller

第二步:下載原始碼安裝

在github中打包下載,解壓到電腦中,執行命令列進入此目錄。

//進入子目錄 bootloader
cd bootloader

//build the bootloader 執行
python ./waf configure build install

//重新進入根目錄
cd ..

//安裝pyinstaller
python setup.py install

第三步:配置虛擬環境

在按快捷鍵win+r輸入cmd進入cmd(管理員)命令列

set Path=%Path%+剛才的解壓目錄; #例如set Path=%Path%+D:\pyinstaller;

第四步:在命令列輸入以下命令檢視安裝結果:

pyinstaller --version

打包程式

pyinstaller 路徑\main.py  -F  -w  -i F:/圖片/1.ico -n nginx管理工具  -p D:\python\Python36\Lib\site-packages
'''
說明:紅色部分是自己要打包的主程式路徑; 
紅色部分之後的可選引數:
 -F:打包為單檔案可執行程式,沒有此引數的話會有很多其他檔案跟可執行檔案在一起
 -w:是否是視窗程式,不指定的話,程式執行的時候有個控制檯黑視窗
 -i:可執行檔案的圖示
 -n:可執行檔案的名稱
 -p:打包時要包含的搜尋目錄,一般不用指定該項
其他引數可參照pyinstaller官方文件。
'''

如果配置沒有問題,敲下回車鍵,等待一會兒即可編譯完成。在解壓目錄下會生成一個dist目錄,在該目錄裡即可檢視編譯生成的可執行程式。

 

一般情況下,這個可執行檔案就可以單獨運行了。不過我的程式稍微複雜些,我的程式是一個flask寫的web程式。直接執行的話一直報模板檔案找不到的錯誤,把模板檔案複製到同一目錄下也不起作用。百度沒有找到解決方法,最後Google出來瞭解決方案:在建立flask的app物件的時候加上這個判斷即可:

from flask import Flask
import sys
import os
 
app = None
if getattr(sys, '
frozen', False): template_folder = os.path.join(sys.executable, '..', 'templates') static_folder = os.path.join(sys.executable, '..', 'static') app = Flask(__name__, template_folder=template_folder, static_folder=static_folder) else: app = Flask(__name__)

參考連結

 接下來,再重新編譯一下,把模板檔案和可執行程式複製到同一目錄,成功執行。