python打包报DLL错误

报126之类的错误,多半是因为DLL引用链里面缺了某些dll,而不一定是第一个DLL找不到

如果你是win10,用pyinstaller打包,然后打出来的包里面没有api-ms-win-*.dll,那恭喜你,可能踩了个坑
微软的描述:
https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/
github上的issue:
https://github.com/pyinstaller/pyinstaller/issues/1566

大约是说,win10里面,这些dll是magic words,不是真正存在的dll,import的时候会自动跳转到别的逻辑去。但是win10以下的系统又真的要import这些dll,所以你如果在win10上面打包,在win10上面跑的话,没有这些dll也是ok的。但是如果在win10以下的系统跑的时候,就需要这些dll了,pyinstaller给出的解决方案是:https://github.com/pyinstaller/pyinstaller/pull/2821/files

  1. 在win7下面打包
  2. 在你的终端用户电脑上装vs2015redist
  3. 在打包机上装win10SDK https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

第一点多半是OK的,但是比较强硬
第二点没试过,但是不符合开箱即用的要求
第三点可能是比较好的解决方案

事实上也有一个比较暴力的方案(也可能是第二点的某种黑实践),你全局搜索一下,你的电脑上装的很多软件都踩过这个坑,所以都会自带一套这些dll文件,你在打包的时候复制进去就好了。但是可能不是彻底解决问题的方法。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值