肯定不全。。。只是我遇到的问题,在此处做一个总结
一、基本使用
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]
[--collect-submodules MODULENAME]
[--collect-data MODULENAME] [--collect-binaries MODULENAME]
[--collect-all MODULENAME] [--copy-metadata PACKAGENAME]
[--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 or "NONE">]
[--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 ...]
常用参数
-D 生成一个文件夹,里面有exe文件及其动态库 默认(运行速度较快)
-F 打包后只生成单个exe格式文件
-c 运行时带控制台 默认
-w 运行时不使用控制台
-i FILE.ico 为exe文件创建图标
如打包test.py成一个exe文件。
pyinstaller -F test.py
不显示控制台
加上-w参数即可不显示控制台。
pyinstaller -F -w test.py
二、去除webdriver的黑框
如果使用selenium,在打包后webdriver运行时会有类似控制台的黑框出现。
去除方法。
修改Python\Python36\Lib\site-packages\selenium\webdriver\common 文件夹下的 service.py 文件。
Python\Python36\Lib\site-packages 替换为当前运行的python环境路径。
第77行添加 creationflags=134217728
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file,
stderr=self.log_file,
stdin=PIPE,
creationflags=134217728)
三、程序中执行cmd等命令打包时-w不使用控制台无法运行
这个修改是建立在未使用控制台进行输入情况下的。如果使用控制台输入什么的。。。这方法可能无效。
重定向subprocess.popen的输入输出(默认都是控制台)。替换为subprocess属性。
如
out, err = subprocess.Popen(cmd,
shell=True,
stdin=subprocess.PIPE, # 需重定向标准输入。否则无法执行
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()
将标准输入 标准输出 错误全部替换了。
四、去除不必要的库。
以后再写。