码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python 打包可执行文件-Nuitka详解


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

    • 引言
    • 一、参数详解
    • 二、与pyinstaller对比
    • 三、打包总结

    引言

    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

    • 以python MP4视频转GIF动图这篇博客的程序为例,展示Nuitka的用法。并与pyinstaller进行对比。

    一、参数详解

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

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

    也可参考:比较PyInstaller和Nuitka

    三、打包总结

    1. 使用python写的小工具,我选择pyinstaller
    2. 大程序我选择c++
  • 相关阅读:
    Linux多线程(线程同步与条件变量)
    『VUE3 后台管理系统』
    线程安全和synchronized关键字
    剑指Offer || 116.省份数量
    【React的组件&组件间的通信(父向子,子向父,同级组件通信)】
    飞塔防火墙之Link Monitor
    每天学一个MySQL函数(一):CONCAT
    C++ Tutorials: C++ Language: Classes: Friendship and inheritance
    ubuntu18.04安装并运行ORB-SLAM2
    2019年亚太杯APMCM数学建模大赛B题区域经济活力及其影响因素的分析与决策求解全过程文档及程序
  • 原文地址:https://blog.csdn.net/qq_38204686/article/details/133209598
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号