爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 19742|回复: 12

[混合编程] python之Nuitka打包蹚路

[复制链接]

新浪微博达人勋

发表于 2020-9-3 17:27:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
几个月前,我用pyinstaller打包pyqt的程序,效果不甚理想,存在“三超”:软件超大(1G),启动超慢(1min),兼容性超难调整。
网上发现有个叫nuitka的打包工具,看帖子说的非常牛批,我打算试试。
Python与模具
一般语言,要么开发快运行慢,要么运行快开发慢;
nuitka打包非常厉害,它把python以C运行,实现了开发和运行都快,打破了魔咒,还顺便把兼容性解决了。
我工作上的程序写了几千行了,不能直接拿这个测试,于是,我今天上午先写个简单的pyqt程序,拿nuitka先试试。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-9-3 17:35:24 | 显示全部楼层
pyinstaller需要配置单独的打包环境,把那些用不到的包卸载掉后在打包,这样就会小很多。
默认的情况下会把你环境中安装的所有包都给你打包到exe中
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-3 21:48:03 | 显示全部楼层
QCD 发表于 2020-9-3 17:35
pyinstaller需要配置单独的打包环境,把那些用不到的包卸载掉后在打包,这样就会小很多。
默认的情况下会 ...

我还是先试试nuitka,pyinstaller的兼容问题我一直没搞好,这已经不是大小的问题,是软件搞不起来的问题,如果nuitka可以解决,也就没pyinstaller什么事了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-4 11:42:29 | 显示全部楼层
本帖最后由 15195775117 于 2020-9-21 15:37 编辑

小试告捷

昨天白天试了下nuitka打包,失败了,晚上再试的时候出现报错:
Normal MinGW will not work! MinGW64 does not mean 64 bits
从网上查,还是大神的帖子给出了解释:
Nuitka常见问题解决集锦-独孤九剑之破Bug式
问题出在anaconda的python环境比较乱,该帖子建议在纯python环境打包,可以使用虚拟机
~~艰难抉择~~
从昨晚到今天早晨,我都在愁,路有2条:
1、卸载掉anaconda,安装纯python,这样的话,我之前装的包都得重装,不知要耗费多少时间,而且包之间的兼容性和依赖关系我也没把握调好
2、安装虚拟机,除了重装各种包,我对虚拟机也没多少使用经验
~~峰回路转~~
正愁的时候,发现了大神更新的帖子:

Nuitka打包Python-Conda环境下之大威天龙

我震惊地发现,只需要在用nuitka命令打包前,执行一句conda activate base,就不需要再考虑python环境的问题了,
这句命令应该是把环境锁定在base下了,因为anaconda界面的environment里,第一个环境就是base,
那么我想如果anaconda如有其他环境,例如python2.7环境(命名为py27),执行conda activate py27即可把打包环境锁定在python2.7了
~~效果展示~~
360截图20200904110736767.png
附件中out.rar是打包好的软件,nuitka_1.rar是py文件和ui文件
打包步骤:
1、conda activate base
2、cd py文件路径
2、nuitka --mingw64 --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2 --output-dir=out  nuitka1.py

nuitka_1.rar

2.49 KB, 下载次数: 3, 下载积分: 金钱 -5

out.rar

27.77 MB, 下载次数: 13, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-10 09:33:27 | 显示全部楼层
命令行闪退如何看报错?
打包好的exe双击一下,cmd窗口一闪而过,看不到报错,
定睛一看,闪退的cmd貌似也是空的
解决方法:
打开cmd,设置当前路径为exe所在路径,键入XXX.exe,即可看到报错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-15 09:54:07 | 显示全部楼层
本帖最后由 15195775117 于 2020-9-15 09:58 编辑

报错与解决

报错
import win32api, sys, os
ImportError: DLL load failed: 找不到指定的模块

解决
参考帖子win32api pywin32 安装后出现 ImportError: DLL load failed
将python安装目录下...\Lib\site-packages\pywin32_system32下的所有文件拷贝入C:\Windows\System32
我看到文件夹内只有2个文件:pythoncom37.dll和pywintypes37.dll

P.S. 目前已卸载anaconda,使用纯python的“干净环境”进行打包


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-9-20 21:28:08 | 显示全部楼层
真心敬佩,您真厉害
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-20 23:52:38 | 显示全部楼层
slddbs 发表于 2020-9-20 21:28
真心敬佩,您真厉害

因为平时还有工作,该贴奉行【碎片化探究】的原则,会陆续更新,最后形成一套成熟的打包步骤,敬请期待
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-9-21 07:47:16 | 显示全部楼层
15195775117 发表于 2020-9-20 23:52
因为平时还有工作,该贴奉行【碎片化探究】的原则,会陆续更新,最后形成一套成熟的打包步骤,敬请期待

想咨询下大能,含matplotlib绘图类的一直未打包成功,如何处理?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-21 09:46:36 | 显示全部楼层
slddbs 发表于 2020-9-21 07:47
想咨询下大能,含matplotlib绘图类的一直未打包成功,如何处理?

这跟你的打包命令和步骤有关,要看是什么python和matplotlib版本,还要看是什么报错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表