记录一些Nuitka打包过程中遇到的坑
最近涉及到一个python项目的打包,用pyinstaller打包pytorch的时候总是出错,无奈使用别的方法。在知乎上看到了关于nuitka的介绍,介绍得很详细,按照流程做就好,基本也可以成功,但是由于我的这个项目比较复杂,用到了比较多的库,就产生了很多personal的problem。折磨了我很久,终于算是一一解决了,在这里记下来。先把知乎的链接放上来,真的很详细,我还去问了问题,题主也很耐心地解答。
链接:Click This!
- 路径问题:一开始打包的时候,在最后生成的exe有控制台的时候能加载进来模型,没有控制台就加载不进来。后来经过百度发现原来
__file__
在没有控制台的时候是没有意义的,那当然通过这个获取路径来找模型是不好用的啊。应该用sys.argv[0]
获取路径。 - 关于follow-import-to的问题:一般使用这个一是为了加快exe的速度,二是为了打包成exe以后就隐藏了源码。但是要注意,一个模块在follow-import-to之后就不能再被没有follow import的模块引用,否则会报错。
- 关于加载dll的问题。用
ctypes.Windll.LoadLibrary
的函数的时候如果一起被打包进exe会找不到dll库,最后我的解决办法是跟这个函数有关的相关文件就不给打包进去就好了,别问我为什么,我真的不知道。