nuitka 打包请注意版本

版本查询

python -m nuitka --version

 默认下载的是下面的版本

nuitka 打包请注意版本_第1张图片

上面那个版本 运行下面的代码,参数--nofollow-imports这个参数不起作用

import os 

def __main(main : str):
    parameters = [
       				# 使用gcc编译器来编译得到的C和C++源文件
        '--standalone',				# 构建独立软件,也就是将于系统有关的运行库和Python运行时打包
        '--show-progress',			# 展示打包过程
        '--show-memory',			# 打印打包时的内存占用
        '--nofollow-imports',		# 不打包import语句导入的包(因为nuitka自动导入的库有问题,后面我们会手动导入,这样成功率更高)
        '--plugin-enable=multiprocessing',
        '--experimental=use_peephole',
        '--output-dir=dist'	,		# 存放构建结果的文件夹
        '--follow-import-to=need'

    ]

    param_str = " ".join(parameters)
    command = "python -m nuitka  {} {}".format(param_str, main)

    os.system(command)

__main("main.py")

我们需要卸载上面的版本安装下面的版本

sudo python -m pip install  nuitka==0.6.19.5

nuitka 打包请注意版本_第2张图片

 注意0.6.19.5打包会报错 ,所以我最终还是选择了最新版本1.8.4

User
module.omegaconf.dictconfig.c: In function ‘impl_omegaconf$dictconfig$$$function__27_items’:
module.omegaconf.dictconfig.c:18338:13: error: label ‘function_exception_exit’ used but not defined
             goto function_exception_exit;
             ^~~~

 命令解释

--mingw64 默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
--standalone 独立环境,这是必须的(否则拷给别人无法使用)
--windows-disable-console 没有CMD控制窗口
--output-dir=out 生成exe到out文件夹下面去
--show-progress 显示编译的进度,很直观
--show-memory 显示内存的占用
--include-qt-plugins=sensible,styles 打包后PyQt的样式就不会变了
--plugin-enable=qt-plugins 需要加载的PyQt插件
--plugin-enable=tk-inter 打包tkinter模块的刚需
--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
--plugin-enable=torch 打包pytorch的刚需
--plugin-enable=tensorflow 打包tensorflow的刚需
--windows-icon-from-ico=你的.ico 软件的图标
--windows-company-name=Windows下软件公司信息
--windows-product-name=Windows下软件名称
--windows-file-version=Windows下软件的信息
--windows-product-version=Windows下软件的产品信息
--windows-file-description=Windows下软件的作用描述
--windows-uac-admin=Windows下用户可以使用管理员权限来安装
--linux-onefile-icon=Linux下的图标位置
--onefile 像pyinstaller一样打包成单个exe文件(2021年我会再出教程来解释)
--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
--include-module=复制比如when.py 这些以.py结尾的叫模块
--show-memory 显示内存
--show-progress 显示编译过程
--follow-imports 全部编译
--nofollow-imports 不选,第三方包都不编译
--follow-stdlib 仅选择标准库
--follow-import-to=MODULE/PACKAGE 仅选择指定模块/包编译
--nofollow-import-to=MODULE/PACKAGE 选择指定模块/包不进行编译

 自己记录

1.不知道为什么1.9.4打包的程序运行报错,又退回到1.8.4了

2.如果只打包自己写的那些,其他的都是从site-packages里面去拉库也是可以的,但是很费劲的一个个找,唯一的好处可能是他拉了一次之后,后面再编译就会很快,然后替换掉之前的

3.测试完全编译的那种是生成的.bin 不完全编译的生成的没有后缀,且完全编译的那种我的代码执行需要等待21秒 不完全编译的执行等待需要28秒,完全编译还是要快一些

你可能感兴趣的:(前端,javascript,开发语言)