奇妙数据

Pyinstaller发布的exe程序运行提示VCRUNTIME140.dll 没有被指定在Windows上运行的错误
Pyinstaller发布的exe程序运行提示VCRUNTIME140.dll 没有被指定在Windows上运行的...
扫描右侧二维码阅读全文
03
2019/09

Pyinstaller发布的exe程序运行提示VCRUNTIME140.dll 没有被指定在Windows上运行的错误

Pyinstaller发布的exe程序运行提示VCRUNTIME140.dll 没有被指定在Windows上运行的错误

pyinstaller1.png

pyinstaller是很可以很方便的将python代码打包成可以在windows电脑上运行的exe程序,目前已更新到3.5版本

经过测试,pyinstaller经过upx压缩后发布的exe文件在windows10系统中运行时出现VCRUNTIME140.dll 没有被指定在Windows上运行的错误,在windows7系统上软件未报错,可以正常运行

  • pyinstaller发布成exe基本命令

    pyinstaller -w -F demo.py
  • 运行出错VCRUNTIME140.dll 没有被指定在Windows上运行
    经过仔细观察打包过程,发现在安装了upx压缩组件的电脑环境上,会默认使用upx对dll文件进行压缩,以达到减小exe文件体积的效果,出错原因也正是因为VCRUNTIME140.dll文件被压缩后不能正常运行,所以对应的解决办法也有如下几种

推荐方案

建议不要将python代码发布成单文件格式的exe文件,这样运行程序时会先解压到虚拟目录,再执行程序,对程序运行效率略有影响,在生成exe及对于的组件目录后,使用第三方软件制作成安装包式软件,也是一种很好的软件发布方式

解决办法

  1. 最优方案
    在生成exe文件时,不让upx压缩VCRUNTIME140.dll文件,对应的命令如下

    pyinstaller -w -F demo.py --upx-exclude=vcruntime140.dll
  2. 生成exe文件时全局禁用upx
    不使用upx对dll文件打包,就不会出现dll运行错误的问题,但是生成的exe文件相对upx压缩后的较大

    pyinstaller -w -F demo.py --noupx

其他方案

如果不需要生成单文件式的exe,可以在生成exe和对于的组件目录后,手动替换vcruntime140.dll组件为完整的未压缩组件
对应命令,仅需去掉-F参数即可

pyinstaller -w demo.py

如果希望打包后的文件尽可能小,应当在纯净的python环境下进行(仅安装依赖的库),尽可能不直接使用anaconda集成环境下打包软件,这样可以避免复杂的依赖关系导入无关组件

最后修改:2019 年 09 月 04 日 10 : 10 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论