我正在Windows上使用Anaconda分发的Python 3.6,希望将一个简单的Python脚本转换为独立的可执行文件。问题在于,生成的文件非常大(约900MB),而仅使用了一些外部库。
具体来说,我使用PyQt5和pyqtgraph以及一些集成的Python库(如sys,time,os和math)。到目前为止,我已经尝试使用PyInstaller和Nuitka,但貌似无法显著减小可执行文件的大小。
我注意到存在一些mkl文件,它们占用了大约600MB的空间。删除这些文件后,我仍然能够运行程序,看起来没有问题。我还注意到有两个名为libopenblas的文件,它们似乎对程序的操作至关重要,并且总共占用了100MB的空间。
我查询了类似的问题并在Stackoverflow和其他网站上找到了答案。人们声称他们能够使用PyInstaller生成小于40MB的exe文件。据说为了实现这种大小的减少,应该排除所有杂项库。然而,我不知道什么算是"杂项"。例如,我尝试排除numpy,但程序不能运行,尽管我没有直接在我的程序中使用它。显然,正在使用的库有一些依赖性,没有这些依赖,程序就无法运行。
最后,我在这个论坛上发现建议使用虚拟环境而不是Anaconda。我尝试使用venv设置它,但我遇到了问题,因为我的Anaconda安装干扰了它,并且不允许我重新安装所有必要的库。
无论我做什么,我总是最少有200MB的数据量。如何得到一个小于40MB大小的功能性可执行文件?如果像tensorflow或scipy这样的其他库被整合,那么这样一个简单的程序将产生如此庞大的文件,这不是一个可行的解决方案,到目前为止,我还没有找到解决这个问题的方法。非常感谢任何帮助。
编辑:我尝试从官方网站安装Python并将Anaconda从PATH中删除。结果我得到了一个稍微小一点的文件,但是无法运行。
具体来说,我使用PyQt5和pyqtgraph以及一些集成的Python库(如sys,time,os和math)。到目前为止,我已经尝试使用PyInstaller和Nuitka,但貌似无法显著减小可执行文件的大小。
我注意到存在一些mkl文件,它们占用了大约600MB的空间。删除这些文件后,我仍然能够运行程序,看起来没有问题。我还注意到有两个名为libopenblas的文件,它们似乎对程序的操作至关重要,并且总共占用了100MB的空间。
我查询了类似的问题并在Stackoverflow和其他网站上找到了答案。人们声称他们能够使用PyInstaller生成小于40MB的exe文件。据说为了实现这种大小的减少,应该排除所有杂项库。然而,我不知道什么算是"杂项"。例如,我尝试排除numpy,但程序不能运行,尽管我没有直接在我的程序中使用它。显然,正在使用的库有一些依赖性,没有这些依赖,程序就无法运行。
最后,我在这个论坛上发现建议使用虚拟环境而不是Anaconda。我尝试使用venv设置它,但我遇到了问题,因为我的Anaconda安装干扰了它,并且不允许我重新安装所有必要的库。
无论我做什么,我总是最少有200MB的数据量。如何得到一个小于40MB大小的功能性可执行文件?如果像tensorflow或scipy这样的其他库被整合,那么这样一个简单的程序将产生如此庞大的文件,这不是一个可行的解决方案,到目前为止,我还没有找到解决这个问题的方法。非常感谢任何帮助。
编辑:我尝试从官方网站安装Python并将Anaconda从PATH中删除。结果我得到了一个稍微小一点的文件,但是无法运行。