赞
踩
版本查询
python -m nuitka --version
默认下载的是下面的版本
上面那个版本 运行下面的代码,参数--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
注意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秒,完全编译还是要快一些
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。