天天看點

python pyinstaller 打包代碼生成exe可執行檔案

目的:

“讓正在走彎路的人走上直路”

作者的彎路

我按照網上的教程,用pyinstaller 打包三個py源程式,然後生成一個exe檔案。但是,每次exe檔案執行後,彈出一個框後迅速消失,内容大概是‘XXX modul 不存在‘,然後上網查各種打包缺失子產品的資料,大多都是不可行的。

解決方案

目前存在我知道的是用pyinstaller是有兩種方法打包py代碼的:

1.直接用pyinstaller -F/-D xxx.py類似這樣的方式,這種方式很基礎,但往往出問題。

2.用spec檔案,pyinstaller xxx.spec

spec檔案就是在你執行第一種方式時,它會産生在你目前操作的檔案下,是自動産生的。如果出現缺失子產品的問題(這也是作者出現的問題),就在這個檔案裡面添加你的子產品位址。

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None

a = Analysis(['project_ui.py','python_sap.py','file_model.py'],
#在pathex中添加你的python子產品的位址,我的子產品都是在pkg檔案下,然後放進去。
			 pathex=['python_sap.py', 'file_model.py','C:\\Users\\10003144\\PycharmProjects\\test_dataming\\venv\\pkg','D:\\script2'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='project_ui',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False )

           

其他的參數建議去pyinstaller官網檢視。

配置完spec檔案後,使用pyinstaller xxx.spec,就可以了。在這期間也查閱了很多文章,都寫得不錯,感謝!