admin 管理员组文章数量: 887006
问题现象
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,避免漏缺,推荐这种方式。
本文标签: 报错 工具 pyinstaller python
版权声明:本文标题:win10上使用pyinstaller工具打包python后在win7无法运行(运行报错) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1731971589h1514858.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论