zoukankan      html  css  js  c++  java
  • 01.如何把.py文件打包成为exe,重点讲解pyinstaller的用法

    1.应用场景

    1.1 故事背景

    我自己用python写了一个小程序发给其他同事用,给他的就是一个.py文件,不过他觉得比较麻烦,还要安装环境,他问我有没有简单一点的方式,我给一个exe文件,他就不用安装环境就可以运行我的程序,我内心在想这么麻烦,还要我跟你打包成为exe,不过没办法,谁叫是好朋友了,我就答应他了。

    1.2 寻找资料

    在写c#的时候,面向nuget编程(谁叫四渣渣程序员了);在学习python之前就之前有很多组件(开心的飞起),开始在github和google上寻找资源,最终发现以下几个东西 相关来源

    • PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)。官网
    • dh-virtualenv:构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。官网
    • Nuitka:将脚本、模块、包编译成可执行文件或扩展模块。官网
    • py2app:将 Python 脚本变为独立软件包(Mac OS X)。官网
    • py2exe:将 Python 脚本变为独立软件包(Windows)。官网
    • pynsist:一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python 本身。官网

    1.3 技术方案

    通过对比,最终选择了上面例子中的 pyinstaller

    1.4 pyinstaller 使用教程整理

    1. 直接在命令行用pip安装 pyinstaller【第一次需要安装成功后,后面就不需要再安装了】
    pip install pyinstaller
    


    2. 在命令行中切换到要打包的程序所在目录,直接输入下面的指令即可

    pyinstaller learn01.py -F
    

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

    1.5 关于 pyinstaller 使用总结

    在用 pyinstaller 打包成exe后,点击运行,发现直接闪退,有点懵逼,猜想肯定是自己的使用方式不对,后来也去google上搜索了,发现也有人也在搜索 pyinstaller 打包exe后闪退的相关问题,按照教程尝试了好几篇,找了好几天一直没有理想的答案,发现还是闪退。既然没找到答案,那么我就去youtube上找个播放次数比较多的教程看看,看看别个怎么用法,最终大神的教程中找到了解决办法,在代码最后面加上相关代码就行,我整理了一下三种做法:

    # 1.暂停的第一种方式
    # time.sleep(10)
    
    # 2.暂停的第二种方式
    # input("Press <enter>")
    
    # 3.暂停的第三种方式 (比较推荐这个)
    # 提示使用之前,记得引入相关组件 import os
    os.system("pause")
    

    看到以上的做法,突然想起来了在c#中写控制台的场景,最后都会加一句一下代码(如果不加,那就直接退出控制台了,看不到运行后的控制台返回的参数:

    Console.Read();
    

    1.6 相关参考教程

    1. 知乎的入门教程
    2. awesome中文系列
    3. b站视频教程1
    4. b站视频教程2
  • 相关阅读:
    微信小程序地图组件中的include-points怎样缩放视野并将所有坐标点在规定的视野内展示?
    两种常见的mysql集群架构
    layui+oss阿里云附件上传回调报错问题
    redis hash过期时间
    Static和Extern关键字理解
    代理模式
    中介者模式
    访问者模式
    模板方法模式
    迭代器模式
  • 原文地址:https://www.cnblogs.com/yu-yi/p/9507780.html
Copyright © 2011-2022 走看看