当前位置:   article > 正文

nuitka 打包请注意版本_nuitka --nofollow-import-to

nuitka --nofollow-import-to

版本查询

python -m nuitka --version

 默认下载的是下面的版本

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

  1. import os
  2. def __main(main : str):
  3. parameters = [
  4. # 使用gcc编译器来编译得到的C和C++源文件
  5. '--standalone', # 构建独立软件,也就是将于系统有关的运行库和Python运行时打包
  6. '--show-progress', # 展示打包过程
  7. '--show-memory', # 打印打包时的内存占用
  8. '--nofollow-imports', # 不打包import语句导入的包(因为nuitka自动导入的库有问题,后面我们会手动导入,这样成功率更高)
  9. '--plugin-enable=multiprocessing',
  10. '--experimental=use_peephole',
  11. '--output-dir=dist' , # 存放构建结果的文件夹
  12. '--follow-import-to=need'
  13. ]
  14. param_str = " ".join(parameters)
  15. command = "python -m nuitka {} {}".format(param_str, main)
  16. os.system(command)
  17. __main("main.py")

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

sudo python -m pip install  nuitka==0.6.19.5

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

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

 命令解释

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

 自己记录

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/503057
推荐阅读
相关标签
  

闽ICP备14008679号