一、PyInstaller说明
pyinstaller是一个第三方模块,托管在github上,它是一个把python脚本及其依赖的模块,打包成一个独立的可执行程序,使其能运行在没有安装python环境的机器上。支持Linux/unix /mac 及windows,但注意的是,在什么平台上打包,就会生成对应平台可执行的独立程序,如在windows上打包会生成exe的可执行文件。本文所演示的就是在windows平台使用pyinstaller打包一个简单的exe程序。在linux上同样pyinstaller -F xxx.py 会生成对就的可执行程序。
二、原始脚本内容如下:
1、生成一注双色球代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def
CaiSeQiu(num
=
1
):
num
=
int
(num)
p
=
1
with
open
(
"tmp"
,
'w'
) as f:
while
p <
=
num:
LAN
=
[]
L
=
[]
while
len
(L) <
=
5
:
L
=
LAN.append(random.randrange(
1
,
34
))
L
=
sorted
(
set
(LAN))
BLUE
=
random.randrange(
1
,
17
)
print
(
"红球: %s, 蓝球: %s"
)
%
(L, BLUE)
p
+
=
1
if
__name__
=
=
"__main__"
:
CaiSeQiu()
|
执行会生成如下:
红球: [10, 13, 20, 24, 28, 29], 蓝球: 9
三、使用PyInstaller打包成可执行的exe程序
1、环境
python2.7.13 ,为了打包成有图形化的可执行程序需要安装wxpython模块,pip install wxpython
带有图形化的可执行程序 生成双色球.
2、代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#!/usr/bin/python
# -*- coding=utf-8 -*-
# by author San at 2016-03-03
import
random
import
sys
import
wx
#清除生成的双色球
def
onclear(event):
content.SetValue('')
def
CaiSeQiu(event,num
=
1
):
num
=
int
(num)
p
=
1
with
open
(
"tmp"
,
'w'
) as f:
while
p <
=
num:
LAN
=
[]
L
=
[]
while
len
(L) <
=
5
:
L
=
LAN.append(random.randrange(
1
,
34
))
L
=
sorted
(
set
(LAN))
BLUE
=
random.randrange(
1
,
17
)
content.SetValue(
"红球: %s, 蓝球: %s"
%
(L, BLUE))
p
+
=
1
app
=
wx.App()
frame
=
wx.Frame(
None
, title
=
"彩色球生成器v1.0"
, size
=
(
420
,
350
))
panel
=
wx.Panel(frame)
sBox
=
wx.BoxSizer()
vBox
=
wx.BoxSizer(wx.VERTICAL)
content
=
wx.TextCtrl(panel)
btn1
=
wx.Button(panel, label
=
"生成"
)
btn2
=
wx.Button(panel, label
=
"清除"
)
sBox.Add(btn1, proportion
=
1
, flag
=
wx.EXPAND | wx.
ALL
, border
=
5
)
sBox.Add(btn2, proportion
=
1
, flag
=
wx.EXPAND | wx.
ALL
, border
=
5
)
vBox.Add(sBox, proportion
=
1
, flag
=
wx.EXPAND | wx.
ALL
, border
=
5
)
vBox.Add(content, proportion
=
5
, flag
=
wx.EXPAND | wx.
ALL
, border
=
5
)
btn1.Bind(wx.EVT_BUTTON, CaiSeQiu)
btn2.Bind(wx.EVT_BUTTON, onclear)
panel.SetSizer(vBox)
frame.Show()
app.MainLoop()
|
保存为CaiseQiu.pyw 双击执行如图:
说明:这个pyw后缀的python脚本需要要安装有python的系统上才能执行,但是没法在没有安装python环境的系统执行,因此需要pyinstaller打包成exe文件
3、pyinstaller打包成caiseqiu.exe
将caiseqiu.pyw放到一个非英文目录(c:\mypythonexe\)下,打开cmd -->cd c:\mypythonexe
如图:
执行:pyinstaller -F -w caiseqiu.pyw 此时会出现类似 如下信息
3845 INFO: Building COLLECT out00-COLLECT.toc completed successfully.
表示打包成功;此时目录下有如下信息
c:\MyPythonexe 的目录
2017/07/13 14:46 <DIR> .
2017/07/13 14:46 <DIR> ..
2017/07/13 14:46 <DIR> build
2017/07/12 18:32 1,264 caiseqiu.pyw
2017/07/13 14:46 873 caiseqiu.spec
2017/07/13 14:46 <DIR> dist
2 个文件 2,137 字节
4 个目录 4,577,239,040 可用字节
在dist目录下就会有一个caiseqiu.exe 如下:
双击执行如下:
点生成即生成一柱,清除功能。
到这里我们使用wxpython PyInstaller模块完成windows平台 可执行exe程序打包。