Python: pyinstaller模块,将python脚本,打包成单个exe

最近开发一些小工具给技术部分享使用,提高效率,
但是python代码执行需要对方的本地环境安装python3.6,
并且代码到处传播并不好,
所以专门尝试了一次打包exe

模块:pyinstaller

环境:python3.6 + win10

  1. 打开cmd命令行

  2. 安装模块

    • python -m pip install pyinstaller
    • 普通模块到这就安装完了,
    • 但是pyinstaller不行,执行各种报错。具体见下文
  3. 消除报错:

    1. compile需要c支持
      • 下载安装 pywin32-221.win32-py3.6.exe
      • 这里对应的python为32位版本
    2. pip安装pyinstaller发行版只支持到python3.4
      • 官方develop开发版已经支持3.6了
      • 所以这步安装后,还没完,
    3. 需要手动升级pyinstaller,以支持python3.6
      • 从作者的git下载pyinstaller-develop.zip
      • 解压缩后的PyInstaller目录
      • 复制到c:\python36\Lib\site-packages\
      • 将之前安装的pyinstaller模块文件覆盖就行了
  4. 安装完成:

    • 到此python3.6的exe打包模块pyinstaller算是安装完了
  5. 代码打包:

    • 在py脚本的同目录写个打包脚本bat,
    • 里面代码如下:
      pyinstaller -F -p c:/python36 -i script/LoginResource/login96.ico login.py
      pause>nul
      
    • 第一行的-F为打成单个exe文件,
    • -i为指定ico图标
    • -p据说是帮助打包定位python目录,貌似没啥意义
    • 最后login.py为你的脚本启动文件,
    • 里头import或调用的全都不用管。
  6. 发布:

    • 从bat同目录下的disc目录下,
    • 拿到xxxx.exe文件就可以了