Nuitka打包就是先略过torch,numpy,pyqt等系统库,运行时缺什么包就从对应python环境中复制相应的包过去就好了。
在我打包完pytorch代码并复制torch和numpy包到根目录后,还是出现了导入失败的问题。经过百度发现是由于numpy版本太高的原因。在我把numpy从1.19.降到1.16.之后,重复上述操作就打包成功了。
Nuitka 是一种新型的打包技术,它可以把python代码用c重新编译并运行
nuitka –standalone –mingw64 –show-memory –show-progress –nofollow-imports –output-dir=o index.py
如果python程序中仅仅使用了一些自定义的模块,那么参数 --follow-imports
就足以达到发布的效果,一个exe外加一个python3x.dll就可以在任何电脑上运行,无论是否安装python(当然架构要对应),然而实际情况往往比较复杂,稍微强大一点的程序都会调用一些第三方库,比如pyqt,numpy,这些模块中调用了大量的pyd或者dll文件。这个时候就需要使用参数 <strong>--standalone</strong>
。
参数 --standalone
默认包含参数 --follow-imports
,即会尝试对所有的引用到的库都进行打包,将这些库中的py或者pyc打包进exe,然后再将所依赖的二进制文件(dll或者pyd)拷贝到exe所在文件夹。只要命令能够执行完成不出错,生成的exe就可以完全脱离python环境独立运行。
nuitka打包相对来说是比较耗费时间的,特别是针对像pandas这样的大家伙,所以在最终发布之前,可以暂时不对这些库进行打包(–nofollow-imports),而是将这些库手动拷贝到搜索路径中,比如exe同级目录。只要能够找到这些库,程序就能正常运行,否则会提示 no module named xxx
Original: https://blog.csdn.net/weixin_38906715/article/details/125533618
Author: Replete
Title: Nuitka 打包pytorch、numpy项目
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762790/
转载文章受原作者版权保护。转载请注明原作者出处!