1、PyInstaller简介

PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序。
PyInstaller 制作出来的执行文件并不是跨平台的,如果需要为不同平台打包,就要在相应平台上运行PyInstaller进行打包。

2、PyInstaller安装

pip install Pyinstaller

有时候会安装失败?用以下方式安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Pyinstaller

永久设置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3. 准备需要的文件

用python打包exe应用程序-PyInstaller_python

我们的tree文件夹放在c盘的

fac.ico 程序的图标

tree.py 是python文件

4.使用Pyinstaller

使用默认Pyinstaller打包方式

打开cmd窗口,把路径切换到当前路径打开命令提示行,

4.1 切换到英文输入法 win+R 打开命令窗口 输入cmd

用python打包exe应用程序-PyInstaller_python_02

4.2 切换到项目目录

用python打包exe应用程序-PyInstaller_python_03

一定要切换到项目目录再执行打包命令

4.3 输入命令打包

 

pyinstaller -F -i ./fac.ico tree.py

输入命令后看见 successfully 那就是成功了

用python打包exe应用程序-PyInstaller_python_04

4.4 看打包的结果

用python打包exe应用程序-PyInstaller_python_05

这个时候多了很多文件和文件夹

dist目录就是我们打包好的地方

用python打包exe应用程序-PyInstaller_python_06

tree.exe 就是我们打包好的文件

5.5 运行查看我们打包好的exe文件

对,双击就可以打开

用python打包exe应用程序-PyInstaller_python_07

 

5、参数的含义

-F 表示生成单个可执行文件

-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

-p 表示你自己自定义需要加载的类路径,一般情况下用不到

-i 表示可执行文件的图标

6. 附圣诞树源文件

tree.py



import turtle


screen = turtle.Screen()
screen.setup(375, 700)
 


circle = turtle.Turtle()
circle.shape('circle')
circle.color('red')
circle.speed('fastest')
circle.up()


square = turtle.Turtle()
square.shape('square')
square.color('green')
square.speed('fastest')
square.up()


circle.goto(0, 280)
circle.stamp()


k = 0
for i in range(1, 13):
    y = 30 * i
    for j in range(i - k):
        x = 30 * j
        square.goto(x, -y + 280)
        square.stamp()
        square.goto(-x, -y + 280)
        square.stamp()


    if i % 4 == 0:
        x = 30 * (j + 1)
        circle.color('red')
        circle.goto(-x, -y + 280)
        circle.stamp()
        circle.goto(x, -y + 280)
        circle.stamp()
        k += 3


    if i % 4 == 3:
        x = 30 * (j + 1)
        circle.color('yellow')
        circle.goto(-x, -y + 280)
        circle.stamp()
        circle.goto(x, -y + 280)
        circle.stamp()


square.color('brown')
for i in range(13, 17):
    y = 30 * i
    for j in range(2):
        x = 30 * j
        square.goto(x, -y + 280)
        square.stamp()
        square.goto(-x, -y + 280)
        square.stamp()
turtle.up()
turtle.goto(-20,-250)
turtle.write("节日快乐")
# 这里可以送上你的祝福
turtle.hideturtle()
turtle.done()


7. 源文件下载

链接:https://pan.baidu.com/s/1bpa1-4W_X2Pb_7MeAB4DTQ

提取码:oq2w