pyinstaller使用注意事项及使用技巧

ixiaoye 类库工具 2020-04-03 1332 0 pyinstaller

1、安装pyinstaller前要先安装pywin32下载地址为,安装对应版本(32位或64位) https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

1、pyinstaller安装可以直接使用pip工具安装,pip install pyinstaller

2、安装后,使用时可以直接在命令行使用pyinstaller命令

usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                   [--add-data <SRC;DEST or SRC:DEST>]
                   [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                   [--hidden-import MODULENAME]
                   [--additional-hooks-dir HOOKSPATH]
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                   [--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
                   [--noupx] [--upx-exclude FILE] [-c] [-w]
                   [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                   [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
                   [--win-no-prefer-redirects]
                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                   [--runtime-tmpdir PATH] [--bootloader-ignore-signals]
                   [--distpath DIR] [--workpath WORKPATH] [-y]
                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
                   scriptname [scriptname ...]

3、常用命令 pyinstaller -F xxx.py 打包成一个exe文件,建议使用spec文件配置,避免没有--hidden-import依赖包而运行失败的情况,具体使用办法为:例如先使用 pyinstaller -F xxx.py 运行一次,生成xxx.spec文件,然后使用文本编辑器打开spec文件进行编辑,特别注意的是

  1. pathex 处需要增加引入包的地址,也就是命令运行工具的--add-binary,一般加入venv等生成虚拟环境的site-package文件夹

  2. hiddenimports需要增加需要引入的依赖包的包名,如hiddenimports=['xlrd','xlwt','selenium','xlutils.copy','datetime','random','time','sys.argv']


下面是一个spec的配置实例(可以通过运行一次pyinstaller -F xx.py获得):

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['robot.py'],
             pathex=['C:\\Users\\Administrator\\Desktop\\test','C:\\Users\\Administrator\\Desktop\\test\\venv\\Lib\\site-packages'],
             binaries=[],
             datas=[],
             hiddenimports=['xlrd','xlwt','selenium','xlutils.copy'],
             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='robot',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir='C:\\Users\\Administrator\\Desktop\\test',
          console=True )


评论