使用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的使用推荐看官方文档,本人在这里知识作为一个记录以及简单的使用介绍。

你可能感兴趣的:(程序打包)