安装Pyinstaller
windows小黑窗中,命令行直接输入:
> pip install pyinstaller
也许需要在安装之前更新pip,可以输入以下命令:
> python -m pip install --upgrade pip
使用Pyinstaller
在命令行中格式如下:
> pyinstaller [options] script [script ...] | specfile
或
python pyinstaller.py [options] script [script ...] | specfile
例如:
生成单一exe文件:
> pyinstaller -F test.py
可选参数
命令行输入 pyinstaller -p 命令可以查看所有参数:
> pyinstaller –p
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] [-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 ...]
pyinstaller: error: argument -p/--paths: expected one argument
-
-F , -onefile
: 指明该选项,将会生成一个总的exe文件,所有的文件都会被添加到这一个中。 -
-D, -onedir
: 产生一个目录来盛装用于分发的exe文件,也比较方便。 -
-K, -tk
: 在部署的时候,包含TCL/TK,这对于有图形界面的python文件比较的适用。 -
-a, -ascii
: 不包含编码,因为在支持Unicode的Python版本上默认包含所有的编码,这个选项基本上不怎么用得到。 -
-d, -debug
: 产生Debug版本的可执行文件。 -
-w, -windowed, -noconsole
: 适用Windows子系统执行,当exe文件运行的时候,不会出现命令行CMD窗口。(因为是windows子系统,所以只在windows平台下有效。) -
-c, -nowindowed, -console
: 与上相反,出现CMD窗口,辅助用户操作。 -
-s, -strip
: 这个参考别人的话为“可执行文件和共享库将run through strip,注意Cygwin的strip往往使得普通的win32DLL无法使用”。 -
-X, -upx
: 压缩方式,如果有UPX安装,则会压缩源文件来执行。 -
-o DIR, -out=DIR
: 指定DIR作为exe的生成目录,如果未指定,默认为pyinstaller的解压目录,且会根据python文件创建出同名的目录来保存生成的exe文件。 -
-p, DIR, -path=DIR
: 设置导入的环境变量路径,windows下英文的分号分隔,也可以使用多个-p
选项来设置导入多个路径(其实这个选项有点鸡肋,分发版的话基本上不怎么用得到)。 -
-icon=<FILE.ICO>
: 将file.ico添加为exe文件的图标(可以自定义,注意为ico文件,否则格式不正确的话会出错的)。 -
-icon = <FILE.EXE, N>
: 原理同上(只是把file.exe文件的第N个图标作为资源来使用,不怎么用得到)。