zoukankan      html  css  js  c++  java
  • 把 Python 脚本打包成可以直接双击运行的 .exe 文件 【转】

      因为最近要用到 Python 脚本,所以自己学习了一下,顺便学习如何把它打包成 .exe 可执行文件,达到双击运行的效果,网上找了资料,保存下来学习用,原文出处:https://baijiahao.baidu.com/s?id=1606400855559470971&wfr=spider&for=pc

      大家都知道,Python是一种脚本语言,也就是解释型的语言,需要解释器来进行解释以后才可以执行,而Python源代码需要在Python虚拟机上面运行,但是我们做好的程序,不可能给用户使用的时候还让他安装一个Python环境,所以今天我们讲解如何将Python程序打包为exe可执行文件。提示: 以下的教程都是再有Python环境的基础上的,如果没有安装,请先参考:Python安装以及环境变量配置

      

    一、安装pyinsatller

      打开命令行窗口,输入如下指令:

                    pip3 install pyinstaller

      然后静待pyinstaller自动安装好

      此外还要安装好 win32api ,可以用命令 pip install pypiwin32pip3 install pypiwin32  或 python -m pip install pypiwin32 直接下载安装,如果没有安装好这个,生成的exe文件的时候,会报错,是无法生成 .exe 文件的,此外还要注意win32api的版本要跟你的Python编译器的版本一致,不然安装 win32api 时会找不到 python 注册表

    二、使用pyinstaller打包Python程序

      ①在你的Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击"在此处打开命令行窗口"或者“在此处打开PowerShell窗口” 或者先进入命令行窗口,然后使用cd指令进入程序文件夹

      

      ②输入以下指令,开始打包

                  pyinstaller -F (-i icofile) -w  filename

      filename表示你的Python程序文件名

      -w 表示隐藏程序运行时的命令行窗口(不加-w会有黑色窗口)

      括号内的为可选参数,-i icofile表示给程序加上图标,图标必须为.ico格式

      icofile表示图标的位置,建议直接放在程序文件夹里面,这样子打包的时候直接写文件名就好

      个人实操说明:这里我实际操作的时候添加图标就无法生成,不加图标按下面的命令生成就可以,具体原因待以后补充

      

      如果我要添加图标就报下图的错误,这里我已经安装好了WIN32api了的,具体造成错误原因没还没找到

      

    补充:

      上面说的无法生成 ico 图标问题,已经解决,测试是因为我的文件名后缀没有输入,要先生成 ico 图标,再生成 exe 运行程序的,测试指令如下

      

      输入完成,按回车,就会开始自动打包了,第一次打包过程可能比较缓慢

      输入示例:

          pyinstaller -F-i tello.ico -w love.py

      然后我们进入到程序目录里面会再看到一个名称为dist目录,打包好的exe程序就在里面

      

      注意:如果原本的程序中使用到了相应的资源,需要复制到该目录下,否则程序会无法运行

      比如我这里在程序中使用到了love.png这个图,所以就需要将该文件放到dist目录下

    最后补充一个 pyinstaller 的各个参数表

      

    参数含义
    -F 指定打包后只生成一个exe格式的文件
    -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
    -c –console, –nowindowed 使用控制台,无界面(默认)
    -w –windowed, –noconsole 使用窗口,无控制台
    -p 添加搜索路径,让其找到对应的库。
    -i 改变生成程序的icon图标

    关于有图片音频文件时打包成 exe 的补充:

      对于程序里引用了图片跟音频的python,打包之后会出现闪退情况,或者打开exe文件失败的情况,这时候只要把程序里的图片引用路径改为绝对路径,并在前面加 r 即可,如下所示:  

    background_1 = pygame.image.load(r'E:Work_filePython_test
    o.jpg').convert()

      

  • 相关阅读:
    重建Exchange邮件系统的系统邮箱
    枚举算法001
    关于网站备案的44个问题
    wireshack使用
    格言
    程序员遇到BUG的解释
    只要有信心任何事情都可以做成,今天表现不错哦,加油!
    踏实,自信
    学会经营自己的关系
    戒酒
  • 原文地址:https://www.cnblogs.com/xingboy/p/10931102.html
Copyright © 2011-2022 走看看