• Python生成windows可执行的exe文件


    本方法弊端很大!不建议采用!

    建议使用更加友好的方法:
    参考:
    https://segmentfault.com/a/1190000016087451
    https://www.cnblogs.com/aoede-jacqueline/archive/2019/07/25/11244714.html

    为什么要生成可执行文件

    • 不需要安装对应的编程环境
    • 可以将你的应用闭源
    • 用户可以方便、快捷的直接使用
      缺点:程序很大。

    准备Python项目/源文件

    hello.py:

    import os
    print('Hello Python!')
    os.system("pause");
    

    import os
    if __name__ == '__main__' :
        print('Hello Python!')
        os.system("pause");
    

    安装pyinstaller

    在设置好conda软件源为清华开源站之后,Windows开始菜单以管理员模式运行Anaconda Prompt:

    conda install pyinstaller
    

    检查pyinstaller安装成功与否:

    pyinstaller -v
    

    pyinstaller命令参数说明

    pyinstaller参数作用

    • -F 表示生成单个可执行文件
    • -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
    • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
    • -c –console, –nowindowed 使用控制台,无界面(默认)
    • -p 表示你自己自定义需要加载的类路径,一般情况下用不到
    • -i 表示可执行文件的ICO图标文件
    • 其他参数,可以通过pyinstaller --help查看

    开始打包

    在Anaconda Prompt命令行里进入要打包的脚本所在目录,执行:

    pyinstaller -F -i favicon.ico nhdz.py
    

    打包完成后,进入到当前目录下,会发现多了__pycache__builddistnhdz.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,可以把它拷贝到其他地方直接使用(无需Python环境)。

    封装exe为安装包

    1. 这一步其实很简单,选中exe程序,右键添加到压缩文件....
    2. 勾选创建自解压格式压缩文件锁定压缩文件,压缩文件名为installer.exe,压缩文件格式保持默认为RAR格式.
    3. 选择高级选项卡,点击自解压文件选项.
    4. 在自解压文件选项中设置选项,比如快捷方式,图标,是否设置密码等等.

    注意

    • 打包完成后就可以分享给其他人了.
    • 建议打包完成后,自己安装一次试试看看能不能正常运行.
    • 使用WinRAR打包的程序其实就是绿色程序, 没有注册表等信息.
    • 卸载的时候直接删除文件夹和对应的快捷方式就行.

    ===

    上面的打包出来的EXE很大!使用下面的方法可以减小体积

    ===

    #建立虚拟环境packEnv
    conda create --name packEnv python=3.6
    #进入虚拟环境(上一步可省略,因为没有虚拟环境的话会自动建立一个)
    activate packEnv
    #安装模块.主要是pysimplegui,pyqt,numpy(太高版本也不行)等等,你的py里用到的模块
    conda install numpy=1.16.4
    #打包的模块也要安装
    conda install pyinstaller
    #开始打包
    pyinstaller -F -i hello.ico hello.py
    
  • 相关阅读:
    uTenux-OS-Task再探
    uTenux——LED驱动讲解
    uTenux——HelloWord
    uTenux——重新整理底层驱动库
    template的超级bug
    [LeetCode] Integer to Roman
    [LeetCode] Roman to Integer
    [LeetCode]Flatten Binary Tree to Linked List
    [LeetCode] LRU Cache [Forward]
    [LeetCode] Reorder List
  • 原文地址:https://www.cnblogs.com/charleechan/p/12311187.html
Copyright © 2020-2023  润新知