Python是一个脚本语言,被解释器解释执行。它的发布方式:html
.py文件:对于开源项目或者源码没那么重要的,直接提供源码,须要使用者自行安装Python而且安装依赖的各类库。(Python官方的各类安装包就是这样作的)python
.pyc文件:有些公司或我的由于机密或者各类缘由,不肯意源码被运行者看到,可使用pyc文件发布,pyc文件是Python解释器能够识别的二进制码,故发布后也是跨平台的,须要使用者安装相应版本的Python和依赖库。mysql
可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只须要把用法告诉Ta便可。比较麻烦的是须要针对不一样平台须要打包不一样的可执行文件(Windows,Linux,Mac,...)。git
本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python自己就能够搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,github
PyInstaller其实就是把python解析器和你本身的脚本打包成一个可执行的文件,和编译成真正的机器码彻底是两回事,因此千万不要期望成打包成一个可执行文件会提升运行效率,相反可能会下降运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操做系统下,它主要用的binutil
工具包里面的ldd
和objdump
命令。sql
PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其余脚本,而后去查找,复制,把全部相关的脚本收集起来,包括Python解析器,而后把这些文件放在一个目录下,或者打包进一个可执行文件里面。shell
能够直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只须要告诉用户,你的应用App是自我包含的,不须要安装其余包,或某个版本的Python,就能够直接运行了。windows
须要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统一样的环境下。也就是说,不具有可移植性,若须要在不一样系统上运行,就必须针对该平台进行打包。app
pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行python2.7
最新版是pyinstaller 3.1.1。支持python2.7和python3.3+。
可运行在Windows,Mac和Linux操做系统下。
但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下。
第一种方法是使用命令安装Pyinstaller,命令pip install Pyinstaller,(大写的P)
在Windows下,Pyinstaller须要PyWin32的支持。当用pip安装Pyinstaller时未找到PyWin32,会自动安装pypiwin32。
若是第一种方法安装失败,咱们就须要找到第二种方法将工具下载到本地进行安装:
一、先下载 pyinstaller的安装文件,下载地址:http://www.pyinstaller.org/downloads.html
二、我安装的是3.4版本,直接下载:pyinstaller 3.4
三、下载到本地后,直接解压,而后经过管理员模式打开命令窗口,用 cd 命令切换至 pyinstaller的解压路径,而后运行 python setup.py install
四、安装的过程会花点时间,就耐心等待吧,出现下面的提示代表安装成功
---------------------------------------------------------------------------------------------------------------------
Best match: setuptools
40.8
.
0
Adding setuptools
40.8
.
0
to easy
-
install.pth
file
Installing easy_install
-
script.py script to C:\Program Files\Python3\Scripts
Installing easy_install.exe script to C:\Program Files\Python3\Scripts
Installing easy_install
-
3.6
-
script.py script to C:\Program Files\Python3\Scripts
Installing easy_install
-
3.6
.exe script to C:\Program Files\Python3\Scripts
Using c:\program files\python3\lib\site
-
packages
Finished processing dependencies
for
PyInstaller
=
=
3.4
---------------------------------------------------------------------------------------------------------------------
PS C:\Windows\system32> pip show pyinstaller
Name: pyinstaller
Version:
3.4
Summary: PyInstaller bundles a Python application
and
all
its dependencies into a single package.
Home
-
page: http:
/
/
www.pyinstaller.org
Author: Giovanni Bajo, Hartmut Goebel, David Vierra, David Cortesi, Martin Zibricky
Author
-
email: pyinstaller@googlegroups.com
License: GPL license with a special exception which allows to use PyInstaller to build
and
distribute non
-
free programs (including commercial ones)
Location: c:\program files\python3\lib\site
-
packages\pyinstaller
-
3.4
-
py3.
6.egg
Requires: setuptools, pefile, macholib, altgraph, pywin32
-
ctypes
Required
-
by:
cmd(或Power shell)进入py程序项目目录,执行命令:pyinstaller -F -w --icon=xxx.ico main.py --noconsole。其中,-F表示生成单exe可执行文件,-w表示窗体程序,
--icon是设置exe的显示图标,'main.py'是程序的入口,--noconsole 表示不展现cmd窗口,反过来想看cmd窗口就改为--console。
编译:pyinstaller -F -w game.py (-F表示打包单个文件,-w是为了打开exe时候不弹出黑框)
设置exe的图标:pyinstaller -F -w -i bitbug_favicon.ico game.py (-i用来设置编译成exe文件的图标,后面跟.ico格式的图片文件)
一阵刷屏以后,终于打出成功的提示:
程序目录下多了几个文件夹:一个spec文件,build文件夹,一个dist文件夹,其中的dist文件夹内就是咱们生成的exe应用程序:
打开目录dist咱们会看到咱们想要的EXE程序文件,双击运行它。是否是咱们的程序呢?
至此咱们的 “Python脚本导出为exe程序” 成功结束
1、多文件打包为单一文件时,即pyinstaller 命令中加入了-F,也可能会致使错误。尽可能不要使用-F。
2、尽可能把打包后的文件放在英文目录下。
多个.py文件打包命令格式以下:
pyinstaller [主文件] -p [其余文件1] -p [其余文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]
3、使用pyinstaller打包的时候,仅打包.py文件,其他依赖项只需在打包完成后,拷入打包生成的根目录便可。
4、举例说明:
其中VIPCracker.py是主程序入口文件,其余.py文件是自建模块,须要在主文件中使用,zh_CN.qm和JygoxigmJ.db文件是程序中须要用到的额外文件(将它们放在打包后生成的.exe文件的同一个目录下便可)
以上文图中结构为例,在根目录打开命令窗口并进入根目录下,输入命令:
pyinstaller -F -i crack.ico -w VIPCracker.py -p CholenSql.py -p ImgICon.py -p VIPGUI.py
--hidden-import CholenSql --hidden-import ImgICon --hidden-import VIPGUI
拓展知识:pyinstaller 中的-i crack.ico 能够设置生成.exe文件的图标。
多文件打包:
命令格式以下,下命令为一条命令,为方便显示作了分行处理:
pyinstaller [主文件] -p [其余文件1] -p [其余文件2]
--hidden-import [自建模块1]
--hidden-import [自建模块2]
# 以上为一整条命令
pyinstaller main.py -p mysql.py -p other.py --hidden-import mysql --hidden-import other
在目录结构:“程序根目录\dist\main\” 下能够找到生成的main.exe。将其余依赖文件拷贝进入“程序根目录\dist\main\” 下,便可运行
项目XXX举例,main和ico文件要放一块儿 -p 文件夹,由于项目下我建立了case、autodriver、data、page文件夹,文件夹里面放的*.py文件经过--hiddent-import指向,代码以下:
pyinstaller -F -i t.ico -w main.py -p case -p autodriver -p data -p page -p page --hidden-import workday.py --hidden-import auto_driver.py --hidden-import login.csv --hidden-import base_page.py --hiddent-import sub_page.py
注意:--hiddent-import是连在一块儿的,dist文件夹里面要把须要的问卷copy进来,而后整个dist文件夹就能够任意移动到其余位置,到时候运行*.exe文件就能够执行程序了
参考文献:
一、如何把Python脚本导出为exe程序: https://www.cnblogs.com/robinunix/p/8426832.html
二、Python编译成exe: https://blog.csdn.net/hxy199421/article/details/86609219
三、Python学习笔记(15)-Python代码转换为exe可执行程序详解:https://blog.csdn.net/woshisangsang/article/details/73230433
四、python文件封装成*.exe文件(单文件和多文件): https://www.cnblogs.com/jackzz/p/9431923.html
五、Pyinstaller打包多个.py文件: https://blog.csdn.net/CholenMine/article/details/80964272