直接使用Python开发的软件时有许多不方便的地方,如需要安装特定的Python环境,需要安装依赖库。为了便于部署,需要将Python源代码编译成可执行文件,编译后的可执行文件就能脱离python环境运行了。
安装
将py编译成可执行文件需要使用PyInstaller,需要注意,从百度搜索到的下载链接来自SourceForge,而PyInstaller的开发似乎已经转到Github上去了,因此从SourceForge上下载的版本不是最新的。
目前最新的PyInstaller版本是2.1,最方便的安装方式是通过pip
使用如下命令安装:
pip install pyinstall
当然,也可以通过下载源代码编译方式安装:
python setup.py install
安装完成后,使用如下命令可以确认版本号:
pyinstaller --version
如果显示Error: Python 2.6+ on Windows support need pywin32
,则说明当前没有安装pywin32,安装后即可正常运行PyInstaller。
安装pywin32时需要注意,pywin32的版本和本机Python位数和版本必须相同。
简单使用
最简单的使用方式是运行pyinstaller myscript.py
来生成可执行文件,其中myscript.py
是需要编译成可执行文件的源代码。
通过这种方式生成的可执行文件默认位于当前文件夹的dist目录下的myscript目录中,该目录下除了有exe文件外,还有若干个其他文件,这些文件都是运行时必须的。
编译完成后可以删除build文件夹,该文件夹存放的是编译过程中的生成的临时文件
如果希望编译出的exe文件不依赖其他文件,可以添加-F
选项:
pyinstaller -F myscript.py
编译出的单独的exe文件在启动时速度上略慢于编译成文件夹方式。因为在执行单独的exe时会将资源先释放到临时文件夹中再执行。
常用选项
–distpath=path_to_executable
指定生成的可执行文件存放的目录,默认存放在dist目录下
–workpath=path_to_work_files
指定编译中临时文件存放的目录,默认存放在build目录下
–clean
清理编译时的临时文件
-F, –onefile
生成单独的exe文件而不是文件夹
-d, –debug
编译为debug模式,有助于运行中获取日志信息
–version-file=version_text_file
为exe文件添加版本信息,版本信息可以通过运行pyi-grab_version
加上要获取版本信息的exe文件的路径来生成,生成后的版本信息文件可以按需求修改并作为--version-file
的参数添加到要生成的exe文件中去
i <FILE.ico>, -i <FILE.exe,ID>, –icon=<FILE.ico>, –icon=<FILE.exe,ID>
为exe文件添加图标,可以指定图标路径或者从已存在的exe文件中抽取特定的ID的图标作为要生成的exe文件的图标
另外,还可以通过spec文件来生成可执行文件,运行pyi-makespec options script [script ...]
可以生成spec文件,修改spec文件后执行:
pyinstaller specfile
或者
pyi-build specfile
就可以生成可执行文件了。
spec文件方式生成可执行文件提供了更多的定制选项,包括自定义python库的位置,要打包的其他文件路径等等。