admin管理员组

文章数量:1631210

问题现象

win10中使用pyinstaller工具打包python为exe后,在win7上运行报错:

无法启动此程序,因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll。尝试重新安装该程序以解决此问题。

无法启动此程序,因为计算机中丢失api-ms-win-core-path-l1-1-0.dll。尝试重新安装该程序以解决此问题。


亦或者

无法启动此程序,因为计算机中丢失api-ms-win-crt-conio-l1-1-0.dll。尝试重新安装该程序以解决此问题。

解决方案

编译原理咱不说,咋也不知道,只知道,反正打包过程中,会从某个地方先把这些exe所需要的dll(运行环境)拷贝到一个缓存目录,然后再通过类似压缩的方式打包成一个exe。

通过我的摸索,我发现说白了,运行却某个dll文件,就是拷贝的源目录不存在该dll,导致未成功拷贝到那个缓存目录,最终exe文件里没包含。

所以废话不多说。我打包python环境前提是3.8,据网上说3.9不支持win7了,待验证。

使用Everything工具全局搜送报错缺失文件,如果没有,就去度娘搜索,然后拷贝到源目录。

那么我们说说源目录应该是什么?

把下载好的文件(api-ms-win-core-path-l1-1-0.dll)放到你的系统路径。它的默认路径是在:
C:\Windows\System (Windows 95/98/Me),
C:\WINNT\System32 (Windows NT/2000),
C:\Windows\System32 (Windows XP, Vista, 7, 8, 8.1, 10)。
在 64位 Windows 上,需要拷贝到
C:\Windows\SysWOW64
当然为了双保险,我32位目录也放了。
C:\Windows\System32\

注:我在后续重装操作系统后,再次配置时,搜索有很多缺失文件,但拷贝过去,依然报错,后来通过各种排查发现,如果拷贝这个目录就没问题,大家可以参考下:\n\rC:\Windows\System32\downlevel\api-ms-win-crt-process-l1-1-0.dll 以及C:\Windows\SysWOW64\downlevel\api-ms-win-crt-process-l1-1-0.dll,所以后续拷贝时,我认为就拷贝这两个分别对应到C:\Windows\System32\和C:\Windows\SysWOW64\即可

还有一种方式就是直接添加路径到环境变量:
为了双保险,还是把32位和64位都加进去,这种方式不好的点在于需要重启电脑,但有一个很好的点是可以包含更多的dll,避免漏缺,推荐这种方式。

本文标签: 报错工具pyinstallerPython