在用PyInstaller打包Python程序就已经上网了解过很多相关打包的软件,觉得PyInstaller还是比较靠谱的;于是乎就决定用PyInstaller了。
用了之后感觉还是不错的;但是就是遇到一个问题一直不解什么原因,在我电脑上编译好,在虚拟机上也测式OK(虚拟机用的是Win7_64旗舰版);折腾了很长一段时间,当初总觉得是别人的系统版本问题(在Win7_64家庭版上测试过,又在Win10_64专业版测试过);后面我又觉得可能是vc++运行库没装好,于是把vc++运行库(2005,2008,2010,2012,2013,2015)_x86_x64安装上去,问题依旧。。。上网也找了很久,无果。
如下图:
这次终于下定决心要找出原因来。。
原因有2点,这2点都是在vcruntime140.dll上,这里做个总结,不讲过程。
原因1:
编译成exe文件,vcruntime140.dll这个文件是从Python\Python3.6\vcruntime140.dll这里导入。从网上下载相同版本的vcruntime140.dll发现它们的文件大小不一至;
如图:
替换后使用Pyinstaller-DD:\py\hello.py --upx-dir upx391w(-D 创建一个目录,包含exe文件,但会依赖很多文件)编译,移植到别的电脑上正常运行。
原因2:
使用Pyinstaller-FD:\py\hello.py --upx-dir upx391w(-F 生成单个exe文件)移植到别的电脑上运行,又是相同的问题;根据错误信息所指,找到vcruntime140.dll查看,文件大小又不对了。
问题出在用参数 --upx-dir upx391w 进行了压缩。去掉后移植到别的电脑上正常运行;查看版本大小也正确。