运行环境:Win 10, Anaconda 虚拟环境, python3.7.1
在使用pyinstaller打包软件时经常会出现无法定位程序输入点的问题,上网搜索了很多但都不能解决我的问题,最终结合自己的经验总结出一些值得参考的解决方法给后来人。因为我是使用的anaconda虚拟环境,所以以下均说法均以这个为前提,如果没有使用anaconda也可以看一看这篇文章没准能得到启发。
一、其他人的方法
其他人的办法大体上都是将 DLLs\libssl-1_1-x64.dll 文件复制到 Library\bin 中覆盖掉 libssl-1_1-x64.dll文件,或者重新安装OpenSSL等等,但是我的DLLs文件夹中根本就没有libssl-1_1-x64.dll文件,所以直接陷入迷茫,好在有GPT和我五年的python使用经验找到了问题的根源。
二、我的解决办法
首先介绍一下我的电脑环境,我的C盘上安装了一个python3.9,D盘上安装了anaconda,而我的程序是在anaconda虚拟环境上搭建的。另外,我的python3.9也有安装pyinstaller。
我的问题出在打包前没有激活虚拟环境,然后在打包时报告了‘动态连接库’的错误,最终导致打包好的程序运行失败。只要在打包前激活虚拟环境,打包好的程序就可以正常运行了。
三、总结
在使用pyinstaller时最好是在哪个虚拟环境下打包就在哪个虚拟环境下安装pyinstaller,如果有十个程序需要打包,这十个程序分别使用不同的虚拟环境,那么就需要为这些不同的虚拟环境分别都安装pyinstaller,只有这样pyinstaller才能正确找到运行程序需要的外部库文件。否则系统会自动寻找一个合适的pyinstaller来打包程序,而我的程序则是系统自动选择了我的python3.9下的pyinstaller打包的程序,如果没有合适的pyinstaller我也不知道会发生什么,但总归不是好结果。