python nuitka 打包方法介绍

作者 : 郭然 本文共2305个字,预计阅读时间需要6分钟 发布时间: 2022-08-8 共397人阅读

python nuitka 打包方法介绍

摘要

python 文件打包是指将写好的代码打包生成可执行文件,使python 代码在没有python环境的电脑上也可运行。本文介绍了在windows下nuitka 的安装使用。通过与pyinstall 打包的比较证明了使用nuitka 打包代码,可以让可执行文件更安全、更小、运行速度更快的优点。在想减少打包文件体积不考虑打包时间的情况下 nuitka 是个很好的选择。

目前已有较为详细的教程来介绍 nuitka,但对于入门的小白来说具体的操作步骤貌似还不够详细,但[官方文档](Nuitka 用户手册 — Nuitka the Python Compiler 文档)太多看不懂,所以本文从 nuitka 下载安装,环境安装,命令介绍使用,及常用命令入手,介绍nuitka。

安全性

Nuitka 将 Python 模块翻译成 C 级程序,然后使用 libpython 和自己的静态 C 文件,以 CPython 的方式执行。pyinstaller 即使使用 –key 命令进行加密也不安全,目前已有 反编译方式。因此nuitka 安全性更好。

文件大小及打包时间测试

代码编写

以我之前写的代码为例,hecoter/hm3u8dl_cli  ,改代码运行要求:python version ≥ 3.10,对 hm3u8dl_cli/cli.py 进行打包测试。

import time,os

def calTime(func):
    """ 装饰器 计算函数运行时间

    :param func: 函数
    :return: 函数
    """

    def wrapper(*args, **kwargs):
        startTime = time.time()
        result = func(*args, **kwargs)
        endTime = time.time()
        print(f'{func.__name__} 耗时{endTime - startTime}s')
        return result

    return wrapper

@calTime
def package_pyinstaller():
    cmd = 'pyinstaller -F cli.py'
    os.system(cmd)

@calTime
def package_nuitka():
    cmd = 'nuitka --standalone --remove-output --mingw64 --onefile --enable-plugin=multiprocessing cli.py'
    os.system(cmd)

# package_pyinstaller()
package_nuitka()

文件大小

pyinstaller:30.6 MB

nuitka:  11.9 MB

打包时间

package_pyinstaller 耗时32.256619930267334s

package_nuitka 耗时514.7898192405701s

文件大小 打包时间
pyinstaller 30.6 MB 32.3 s
nuitka 11.9 MB 8 min 34.8 s

根据测试得nuitka 在打包后的文件大小上比 pyinstaler 小了61%,耗时大幅度延长,因此在想减少打包文件体积不考虑打包时间的情况下 nuitka 是个很好的选择。

nuitka 安装及环境配置

在终端中依次运行如下代码

  1. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  2. python.exe -m pip install –upgrade pip
  3. pip install wheel
  4. pip install nuitka
  5. pip install zstandard
  6. pip install ordered-set
  7. 进入要打包的文件所在文件夹,运行 nuitka –standalone –remove-output –mingw64 –onefile –enable-plugin=multiprocessing cli.py
  8. https://github.com/brechtsanders/winlibs_mingw/releases/download/11.3.0-14.0.3-10.0.0-msvcrt-r3/winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip 找github下载加速服务(Github下载加速-在线工具箱 (mintimate.cn))将解压后的 mingw64文件放到提示的目录 C:\Users\happy\AppData\Local\Nuitka\Nuitka\gcc\x86_64\11.3.0-14.0.3-10.0.0-msvcrt-r3
  9. 配置完成后重新执行打包命令: nuitka –standalone –remove-output –mingw64 –onefile –enable-plugin=multiprocessing cli.py ,根据提示输入 yes
  10. 等待打包完成!

参数介绍

–standalone 保证能在另一台机器运行

–onefile 生成单个可执行文件

–windows-icon-from-ico=./favicon.ico 文件logo

打包常用命令可为:

nuitka --standalone --remove-output --mingw64 --onefile
--enable-plugin=multiprocessing --windows-icon-from-ico=./favicon.ico
main.py

更多命令可参考官方文档:Nuitka 用户手册 — Nuitka the Python Compiler 文档

 

 

赞赏

微信赞赏支付宝赞赏

VIP部落提供编程技术、教育培训、优惠购物以及各类软件和网站源码、模板等资源下载。
VIP部落 » python nuitka 打包方法介绍

常见问题FAQ

提供最优质的资源集合

立即查看 了解详情