• python 打包可执行文件-Nuitka详解


    引言

    Nuitka是用Python编写的优化Python编译器,它可以创建运行时不需要单独安装程序的可执行文件。简单易使用,与Python2(2.6、2.7)和Python3(3.3-3.10)完全兼容,适用于Windows、macOS、Linux等平台。

    安装:pip install -U nuitka + 还需要C++的编译器,详情可以看文档的Requirements部分
    官方文档:https://www.nuitka.net/doc/user-manual.html

    一、参数详解

    打包命令:nuitka xxx.py,其主要参数如下:

    • --help 查看所有参数。
    • --standalone 输出一个文件夹,包含可执行文件和依赖库,无需Pyhon环境即可运行。
    • --onefile 打包成一个文件,而不是一个文件夹。
    • --nofollow-imports 不编译任何导入的模块,覆盖所有其他包含选项,并且不适用于standalone模式。
    • --disable-console 禁用控制台窗口并创建GUI应用程序 (默认关闭)。
    • --output-filename=FILENAME 输出文件名称。
    • --enable-plugin=pyqt5 包含Qt插件,可使用--plugin-list 查询。
    • 查询所有插件nuitka --plugin-list
      在这里插入图片描述

    进行使用,对main.py进行打包:

    • nuitka main.py,需要运行cmd脚本配置环境再打开exe文件
      在这里插入图片描述

    • nuitka --standalone --nofollow-imports --enable-plugin=pyqt5 main.py,不得不说,真的费CPU和时间,因为要先编译第三方库
      help显示 --standalone默认 “–follow-imports” and “–python-flag=no_site”,应该与–nofollow-imports (help也提示不适用于standalone模式)冲突,默认还是要编译所有库。

    • nuitka --onefile--nofollow-imports --enable-plugin=pyqt5 --output-filename=MP4_to_GIF main.py,也是默认编译所有库,但编译成的可执行文件确实小了。
      在这里插入图片描述

    • nuitka --onefile --nofollow-imports --disable-console --enable-plugin=pyqt5 --output-filename=MP4_to_GIF main.py
      在这里插入图片描述

    二、与pyinstaller对比

    参考我的博客:python 打包可执行文件-pyinstaller详解

    • 内存
      pyinstaller加了很多trick 85MBnuitka只有45MB,比pyinstaller小了一半。nuitka不用standalone 和 onefile还是很快的,也超级小,就是需要python环境。
    • 执行速度
      就可执行文件的打开速度,感觉不到有特别大的差距…,打包成单独一个可执行文件,都挺慢的。打包成文件夹,都挺快…
    • 打包速度
      pyinstaller打包速度会快很多。nuitka不用–standalone 或者 --onfile也很快,但感觉就像仅仅加了个脚本用来运行.py一样…

    可能与程序大小有关,以上测试用的MP4_to_GIF只是个小程序、

    也可参考:比较PyInstaller和Nuitka

    三、打包总结

    1. 使用python写的小工具,我选择pyinstaller
    2. 大程序我选择c++
  • 相关阅读:
    卷积神经网络(CNN)实现mnist手写数字识别
    linux Qt编译自己的动态库(.so),详细全流程
    C++11特性-智能指针
    数据挖掘与分析课程笔记(Chapter 14)
    Linux信号
    新版TCGA不同癌种数据合并
    原型模式(prototype pattern)
    【CMake基础】一文带你CMake从0到-1
    uniapp 微信对接地图的三种操作
    ERP软件公司选型的重要根据
  • 原文地址:https://blog.csdn.net/qq_38204686/article/details/133209598