使用Pyinstaller打包exe

當我們我們編寫python程序後,我們有時會將程序打包成不依賴python環境的exe程序,這時我們可以使用PyInstaller這個包來打包我們的程序,使其成爲可以直接運行的exe程序,本人第一次打包的時候遇到了許多坑,在這裏記錄一下,同時也可以給大家一點參考。

首先我們使用pip下載PyInstaller這個包,同時我們會安裝一些其他的依賴包,如果安裝失敗,需要看看依賴的包是否正確安裝了,最好在一臺乾淨的機器上運行,以免遇到一些不可知的問題。

下載好PyInstaller之後,我們有兩種方法可以打包,最簡單的就是使用命令Pyinstaller 你的Python文件.py 然後就會在目錄下生成Build和dist文件夾,dist文件夾下就是打包好的應用程序,這裏值得提一下的就是build文件夾中存在一個warnxxxx.txt文件,記錄了打包的出錯信息,當打包失敗或者程序無法運行時我們可以查看該文件來定位出錯點,看是不是一些依賴或者包不存在,沒打包進去。

以上是最簡單的打包方法,但由於我們可能需要打包一些資源文件或者程序圖標時,我們就需要寫.spec文件告訴pyinstaller我們還需要打包哪些東西,這裏貼一下本人自己打包時用的.spec結構:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['你的Python——main文件.py'],
             pathex=['需要打包的文件夾目錄'],
             binaries=[],
             datas=[
                需要打包的配置或者資源文件
             ],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='打包後的程序名',
          debug=False,
          strip=False,
          upx=True,
          console=False , icon='程序用到的圖標')
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='打包後的程序名')

當我們寫好後就可以執行pyinstaller 你寫好的spec文件.spec 命令,同樣會生成build和dist將我們的程序打包爲exe程序。

最後的一個坑就是本人寫的程序在%AppData%中新建了用戶文件,存放了之前調試產生的一些文件,忘了刪除導致程序運行時一直報錯,重新打包了很多遍,最後刪了了該文件夾中的信息纔打包完成。

關於.spec文件的寫法和pyinstaller的使用推薦看官方文檔,本人在這裏知識作爲一個記錄以及簡單的使用介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章