Python是一个脚本语言,被解释器解释执行。它的发布方式:python
.py文件:对于开源项目或者源码没那么重要的,直接提供源码,须要使用者自行安装Python而且安装依赖的各类库。(Python官方的各类安装包就是这样作的)windows
.pyc文件:有些公司或我的由于机密或者各类缘由,不肯意源码被运行者看到,可使用pyc文件发布,pyc文件是Python解释器能够识别的二进制码,故发布后也是跨平台的,须要使用者安装相应版本的Python和依赖库。app
可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只须要把用法告诉Ta便可。比较麻烦的是须要针对不一样平台须要打包不一样的可执行文件(Windows,Linux,Mac,...)。工具
本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python自己就能够搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,ui
PyInstaller其实就是把python解析器和你本身的脚本打包成一个可执行的文件,和编译成真正的机器码彻底是两回事,因此千万不要期望成打包成一个可执行文件会提升运行效率,相反可能会下降运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操做系统下,它主要用的binutil
工具包里面的ldd
和objdump
命令。操作系统
PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其余脚本,而后去查找,复制,把全部相关的脚本收集起来,包括Python解析器,而后把这些文件放在一个目录下,或者打包进一个可执行文件里面。.net
能够直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只须要告诉用户,你的应用App是自我包含的,不须要安装其余包,或某个版本的Python,就能够直接运行了。命令行
须要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统一样的环境下。也就是说,不具有可移植性,若须要在不一样系统上运行,就必须针对该平台进行打包。 code
pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行blog
可运行在Windows,Mac和Linux操做系统下。
但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下。
使用命令pip install pyinstaller便可
在windows下,pyinstaller须要PyWin32的支持。当用pip安装pyinstaller时未找到PyWin32,会自动安装pypiwin32
若是没有自动安装,自行下载安装:
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/
出现Successfully installed pyinstaller。。。表示安装成功!
打包的app里并不包含任何源码,但将脚本的.pyc文件打包了。
基本语法:
pyinstaller options myscript.py
经常使用的可选参数以下:
-F,--onefile 将结果打包成一个可执行文件
-D,--onedir 将全部结果打包到一个文件夹中,该文件夹包括一个可执行文件和可执行文件执行时须要的依赖文件(默认)
-p DIR,--paths=DIR 设置导入路径
--distpath=DIR 设置将打包的结果文件放置的路径
--specpath=DIR 设置将spec文件放置的路径
-w,--windowed 使用windows子系统执行,不会打开命令行(只对windows有效)
-c,--nowindowed 使用控制台子系统执行(默认)(只对windows有效)
-i,--icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对windows有效)
如:pyinstaller -F myfile.py