使用 pyinstaller 来构建 exe 应用

create on in simple_record with 0 comment and 65 view

由于近期有写爬虫的需要,所以决定了使用强大的 python selenium 去实现,在花了几天时间终于把程序实现后,感觉成就满满。但在高兴之余,我发现,每次要执行去执行爬虫程序都得去手动执行脚本,而且,我还想让它能 windows 上执行,这又不得不在 windows 上安装一系列的运行环境…

这对于懒癌的我来说是绝对不能接受的,此时我突发奇想,能不能把这些脚本构建成 windows 的 exe 执行文件呢?这样每次鼠标点一点不就完事了,岂不乐哉?不想不知道,一想还真行,查了下发现这样的转化工具确实有好多种,pyinstaller就是其中之一,果然,大佬们早都有这样的想法,此时不得不感叹 Python 另一面的强大之处。

环境安装

要想使用 pyinstaller 对 python 进行打包,首先要注意的是,打包成不同系统的执行文件那么必须在对应系统下进行打包,比如我要打包成 exe 文件,那这个过程得在 windows 下进行(看来还是逃不掉在 windows 上安装好 python 相关的环境…)。

  1. 安装 pyinstaller
pip install pyinstaller
  1. 安装 pywin32
    pywin32 是 pyinstaler 运行时所需要的 windows 拓展。
pip install pywin32
  1. 安装程序所需的 python 包

打包构建

  1. 生成 spec 文件
pyi-makespec main.py

此时我们可在同级目录下看到 main.spec 文件,这个文件可进行一系列的配置:

# -*- mode: python -*-
 
block_cipher = None
 
a = Analysis(['main.py', 
'E:\\project\\python_exe\\src\\module\\image.py'],
             pathex=['E:\\project\\python_exe'],
             binaries=[],
             datas=[('E:\\project\\python_exe\\images', 'images'),
			('E:\\project\\python_exe\\network', 'network')],
             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='main',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='main')

其中,有 3 个比较值得关注的配置:

  • 入口以及模块文件
...
Analysis(['main.py', 
'E:\\project\\python_exe\\src\\module\\image.py'],
...

main.py 指的是脚本程序的入口文件.
...module\\image.py指的是自定义的模块文件路径。

  • pathex 项目根目录
  • datas
    静态资源路径,例如:E:\\project\\python_exe\\images目录自定义命名为images后, 在代码中使用 images 目录即可指向对应目录。
  1. 制作 exe
pyinstaller -D main.spec

执行成功后,会在项目中生成 dist 目录,其内容就是我们最终需要的 exe 构建程序。

😁😂😃😄😅😆😇😈😉😐😑😒😓😔😕😖😗😘😙😠😡😢😣😤😥😦😧😨😩😰😱😲😳😴😵😶😷😸😹🙀🙁🙂🙃🙄🙅🙆🙇🙈
🙂