Pyinstaller

简介

PyInstaller bundles a Python application and all its dependencies into a single package. The user can run the packaged app without installing a Python interpreter or any modules. PyInstaller supports Python 3.5 or newer, and correctly bundles the major Python packages such as numpy, PyQt, Django, wxPython, and others.

PyInstaller is tested against Windows, Mac OS X, and GNU/Linux. However, it is not a cross-compiler: to make a Windows app you run PyInstaller in Windows; to make a GNU/Linux app you run it in GNU/Linux, etc. PyInstaller has been used successfully with AIX, Solaris, FreeBSD and OpenBSD but testing against them is not part of our continuous integration tests.

PyInstaller将Python应用程序及其所有依赖项打包到一个包中,用户无需安装Python解释器或任何模块即可运行打包的应用程序。

PyInstaller会读取用户编写的Python脚本,并分析所有代码从而找出所有你的代码运行所需的模块和库。然后,它收集所有这些文件的副本,包括Python解释器,并将它们与脚本一起放在一个文件夹中,或者可选地放在一个可执行文件中

PyInstaller已针对Windows,Mac OS X和GNU / Linux进行了测试。但是,它不是交叉编译器:要制作Windows应用程序,请在Windows中运行PyInstaller;要创建GNU / Linux应用程序,请在GNU / Linux等环境中运行它。PyInstaller已成功与AIX,Solaris,FreeBSD和OpenBSD结合使用,但未在持续集成测试中针对它们进行测试。

PyInstaller 4不支持python2。支持Python 2.7的最新版本是PyInstaller 3.6

 

关于为什么要用pyinstaller:setuptools也支持打包成EXE文件,但是在Python 3环境下并不好用。

打包机制

我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包。同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。

即使我们的项目只使用的一个requests包,但是requests包会依赖一些其他包,使用pyinstaller打包项目时,为了安全,pyinstaller会将所有第三方包+python解释器一起打包。

打包命令

PyInstaller 工具的命令语法如下:

pyinstaller 选项 Python 源文件

不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

假设我们有一个app的Python项目,项目的入口文件名为setup.py,我们cd到app文件夹下,可以执行下面命令将项目打包。

打包为exe文件

Pyinstaller --clean -F setup.py 

执行上面命令,将看到详细的生成过程。打包完成后,将会在此 app 目录下看到多了一个 dist 目录,并在该目录下看到有一个 setup.exe 文件(Linux和Mac OS X下没有后缀)。

上面的命令我们用到了-F 选项,该选项指定生成单独的 EXE 文件。与-F 选项对应的是 -D 选项(默认选项),该选项指定生成一个目录(包含多个文件)。当执行的是Pyinstaller -D setup.py时,dist目录下会有一个setup的子目录,除了setup.exe文件,setup目录内还包含了大量 .dll 文件和 .pyz 文件(Linux下为.so文件),它们都是 setup.exe 程序的支撑文件。在命令行窗口中运行该 setup.exe 程序,同样可以看到与前一个setup.exe 程序相同的输出结果。

不带控制台的打包

上面的打包,双击setup.exe后可以看到程序窗口一闪而过。如果想去掉它,可以用-w选项:

Pyinstaller -F -w setup.py 

打包指定exe图标打包

#xx.ico为指定的图标
Pyinstaller -F -i xx.ico setup.py 

参考

参考博客,有详细的打包过程

pyinstaller官网

pyinstaller 4.2发布文档

详细打包成可执行文件参考

 

你可能感兴趣的:(构建,Python,python)