操作系統: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__)
接下來,再重新編譯一下,把模板文件和可執行程序復制到同一目錄,成功運行。