一、背景

最近用到python下的cx_Oracle模块,开发环境中测试正常,用cx_freeze打包后,到用户机器上一部署,各种奇奇怪怪的问题频出,运行环境如下:

a、开发环境:64位win10操作系统,安装32位python,32位oracle client,32位firefox。

b、生产环境:64位win7操作系统,64位win8操作系统,32位win7操作系统,32位win8操作系统……比较复杂,各种情况都有。

问题主要有两个:1、python经典的中文字符问题,2、vc2015依赖问题,这里重点说下vc2015依赖问题。

错误信息如下,提示api-ms-win-crt-runtime-l1-1-0.dll缺失。

二、原因分析

原因很简单,cx_oracle是在vc2015下编译的,所以运行cx_oracle.pyd需要vc2015运行环境。

百度了一下,发现问题非常普遍,解决方案大同小异(其中又以这个地址的信息最准确全面,http://blog.csdn.net/huqiao1206/article/details/50768481)

总的来说整个过程非常耗时,堪称现实版“多米诺骨牌效应”,为了一个vc2015运行环境,就差没把操作系统的重装。

具体处理过程如下,与帖子中基本一致。

1、安装vc2015 发行包,最后出错,提示需要先安装KB2999226 补丁。

2、安装KB2999226补丁,又提示需要安装win7 sp1(后来发现win8系统,也有同样问题)。

3、安装win7 sp1时,由于机器长期未正常打开update,安装sp1的时候,又遇到一个新的错误,各种补丁。

三、新的解决方案

前述是常规解决方案,庆幸的是经过多方搜索和反复尝试,最终找到了新的解决方案,思路如下:

1、到正常的机器,或者就在开发环境,去搜索api-ms-win-crt-runtime-l1-1-0.dll文件。

结果在C:\windows\system32,以及C:\Windows\SysWOW64,以及C:\Program Files (x86)\Mozilla Firefox中都找到了该文件。

三个目录下都有,到底选哪个呢?涉及到一个新的64位系统32位dll的问题。我参考了这篇文章,https://jingyan.baidu.com/article/454316ab73ce1ef7a7c03a01.html

规则如下:

a、64位操作系统,32位程序,选择syswow64下dll

b、64位操作系统,64位程序,选择system32下dll

c、32位操作系统,32位程序,选择system32下dll

2、拷贝所有api-ms开头的dll ,以及msvcp140.dll,vcruntime140.dll,ucrtbase.dll到程序目录。

一共44个文件。

 驱动器 D 中的卷是 新加卷
卷的序列号是 D:\python 的目录 2017/03/24 02:06 18,624 api-ms-win-core-console-l1-1-0.dll
2017/03/24 02:06 17,600 api-ms-win-core-datetime-l1-1-0.dll
2017/03/24 02:06 17,600 api-ms-win-core-debug-l1-1-0.dll
2017/03/24 02:06 18,104 api-ms-win-core-errorhandling-l1-1-0.dll
2017/03/24 02:06 21,696 api-ms-win-core-file-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-file-l1-2-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-file-l2-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-handle-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-heap-l1-1-0.dll
2017/03/24 02:06 18,104 api-ms-win-core-interlocked-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-core-libraryloader-l1-1-0.dll
2017/03/24 02:06 20,672 api-ms-win-core-localization-l1-2-0.dll
2017/03/24 02:06 18,624 api-ms-win-core-memory-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-namedpipe-l1-1-0.dll
2017/03/24 02:06 19,136 api-ms-win-core-processenvironment-l1-1-0.dll
2017/03/24 02:06 20,160 api-ms-win-core-processthreads-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-core-processthreads-l1-1-1.dll
2017/03/24 02:06 17,600 api-ms-win-core-profile-l1-1-0.dll
2017/03/24 02:06 17,600 api-ms-win-core-rtlsupport-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-string-l1-1-0.dll
2017/03/24 02:06 20,160 api-ms-win-core-synch-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-core-synch-l1-2-0.dll
2017/03/24 02:06 19,136 api-ms-win-core-sysinfo-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-timezone-l1-1-0.dll
2017/03/24 02:06 18,112 api-ms-win-core-util-l1-1-0.dll
2015/06/07 07:08 11,616 api-ms-win-core-xstate-l2-1-0.dll
2017/03/24 02:06 19,136 api-ms-win-crt-conio-l1-1-0.dll
2017/03/24 02:06 22,208 api-ms-win-crt-convert-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-crt-environment-l1-1-0.dll
2017/03/24 02:06 20,160 api-ms-win-crt-filesystem-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-crt-heap-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-crt-locale-l1-1-0.dll
2017/03/24 02:06 28,864 api-ms-win-crt-math-l1-1-0.dll
2017/03/24 02:06 25,792 api-ms-win-crt-multibyte-l1-1-0.dll
2017/03/24 02:06 72,896 api-ms-win-crt-private-l1-1-0.dll
2017/03/24 02:06 19,136 api-ms-win-crt-process-l1-1-0.dll
2017/03/24 02:06 22,720 api-ms-win-crt-runtime-l1-1-0.dll
2017/03/24 02:06 24,256 api-ms-win-crt-stdio-l1-1-0.dll
2017/03/24 02:06 24,256 api-ms-win-crt-string-l1-1-0.dll
2017/03/24 02:06 20,672 api-ms-win-crt-time-l1-1-0.dll
2017/03/24 02:06 18,624 api-ms-win-crt-utility-l1-1-0.dll
2015/06/07 07:08 11,616 api-ms-win-eventing-provider-l1-1-0.dll
2017/03/24 02:06 440,120 msvcp140.dll
2017/03/24 02:06 917,184 ucrtbase.dll
2017/03/24 02:06 83,784 vcruntime140.dll
44 个文件 37,191,043 字节
0 个目录 8,842,960,896 可用字节

至此,成功解决api-runtime确实错误,无需安装vc2015 runtime ,也就无需升级sp1。

总结:

1、最开始的启发其实来自于搜索,偶然搜索到的firefox目录,发现一系列api开头的文件。

2、胆大心细,反复尝试,最开始走了很多弯路,包括什么注册dll之类,其实都是错误的,关键是在ucrtbase.dll文件必须有。

<--end-->

不安装vc2015 Redistributable解决api-ms-win-crt-runtime-l1-1-0.dll丢失错误的更多相关文章

  1. Windows 7 上面安装 dotnet core 之后 使用 应用报错的处理:api-ms-win-crt-runtime-l1-1-0.dll 丢失

    Windows2016 使用 dotnet core的使用 安装了就可以了 但是发现 windows 7 不太行 报错如图示 没办法简单百度了下 https://www.microsoft.com/z ...

  2. Android模拟神器Genymotion eclipse插件安装问题出解决

    我之前一直是打开eclipse之前直接运行Genymotion模拟器就可以连接到adb了,非常方便,但最近突然想来装个eclipse的Genymotion插件玩玩,安装时居然出错了,于是不折腾好心里不 ...

  3. vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版

    vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版 vuejs技术交流QQ群:458915921 有兴趣的可以加入 vuejs 目录结构 build build.js check ...

  4. Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 Postman 使用方法详解

    Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试   问题引入:做接口测试时,有依赖关系的接口往往不好测试( ...

  5. (转)plsql11 x64 安装和配置 解决OCI: not initialized

    跟帖子一样,安装了pl/sql ,设置了oci.dll 以及 TNS_ADMIN,加入path后不能显示数据库连接. 安装 microsoft visual c++ redistributable 2 ...

  6. [ClickOnce] - Win10 管理员模式下无法安装 ClickOnce 之解决

    Issue Windows 10 管理员模式下,点击 ClickOnce 安装程序无反应. 解决 1. 按 WIN+R 键打开“运行”窗口,输入 “gpedit.msc" 打开组策略.2.  ...

  7. CentOS6.0(64位)安装Apache+PHP+Mysql教程,安装Magento(解决DOM,Mcrypt,GD问题)完整教程

    CentOS6.0(64位)安装Apache+PHP+Mysql教程,安装Magento(解决DOM,Mcrypt,GD问题)完整教程 0   Posted by :小黑 On : 2012 年 9 ...

  8. BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法

    BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法 安装Oracle Adapter 安装Oracle客户端 BizTalk 2013R2 安装 ...

  9. xcode 6.4 安装Alcatraz失败解决方法

    Alcatraz Xcode6.4安装不了解决方法http://www.cocoachina.com/bbs/read.php?tid=310380 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

随机推荐

  1. 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  2. 微信小程序怎么用?线下商家最适合玩小程序

    随着微信小程序不断地释放新功能,许多行业越来越关注小程序,目前已经有不少餐饮和线下传统零售企业开始谋划利用好小程序.但是,线下商业有着复杂的场景,如何针对自己行业的特点和需求开发出属于自己的小程序,是 ...

  3. tensorflow Sigmoid 应用

    1.函数 函数:f(z) = 1 / (1 + exp( − z)) 导数:f(z)' = f(z)(1 − f(z)) 2.tensorflow实现 #!/usr/bin/env python # ...

  4. 使用Go和Let's Encrypt证书部署HTTPS

    为什么要使用HTTPS?使用HTTPS的途径有哪些?如何用Go来部署HTTPS?拿出你的小本本,你要的干货都在这儿! HTTPS的好处我们已在之前的文章中提高好多.它加密浏览器和服务器之间的流量,保障 ...

  5. RMAN备份到共享存储失败(win平台)

    RMAN备份到共享存储失败(win平台) 之前在<Win环境下Oracle小数据量数据库的物理备份>这篇文章中,介绍了在win平台下对于小数据量的数据库的物理备份设计. 文中重点提到,强烈 ...

  6. LigerUI LigerGrid getSelectedRows() 多选顺序 不是从上到下修改方法

    1.问题 LigreGrid内部是选中一个,往selected里塞一个, 当执行getSelectedRows() 的时候,会把selected以选中的顺序,返回出来,所以是按照选择顺序返回. 原生代 ...

  7. Hadoop - 国内各站点最高温度、气压和风速统计

    版权说明:  本文章版权归本人及博客园共同所有,转载请标明原文出处(http://www.cnblogs.com/mikevictor07/),以下内容为个人理解,仅供参考. 一.简介 该实例统计国内 ...

  8. 四、什么是vuex

    一.关于vuex刚开始学习的时候对于里面的很多名词有很陌生.很难接受这个定义,下面这个链接很好很简单通俗的解释了什么是vuex 我喜欢的vuex网址:https://zhuanlan.zhihu.co ...

  9. git版本控制 for window安装和命令行使用

    Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...

  10. C#上位机串口控制12864显示

    实现的效果 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 再看一下实物显示效果 先做上位机部分........... 为了程序一启动就把电脑上能用的串口号显示 ...