admin 管理员组文章数量: 887006
使用Pyinstaller打包Python项目至win7运行报错问题,已解决
之前有个项目是在win11开发的,但是客户要求将项目部署到win7端,并且是打包成可执行文件.exe。刚开始很顺利,开发-打包-测试,没曾想移植到win7的时候突然间报错。明明在Pyinstaller工具打包过程中,项目中所有的依赖库都打包进去了。就纳闷为什么无法运行。
报错
分析
初步判读可能是win7win11的系统版本兼容性不同,所以项目需要的某个系统文件缺失,那就找个地方下载给他补进去。
脚本下载:到百度直接搜索脚本名字api-ms-win-core-path-l1-1-0.dll 随处可见下载链接
解决方法一
把下载好的文件(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 上,32位 DLL 文件的默认路径是
C:\Windows\SysWOW64\, 64 位 DLL 文件在
C:\Windows\System32\ 。
确保覆盖已有的全部文件(但保留一个原文件备份),然后重启电脑。
解决方法二
如果问题仍未解决,按以下步骤注册 DLL 文件:
32 位 DLL 文件用在 32 位 Windows 上,
64 位 DLL 文件用在 64 位 Windows 上:
打开一个提升权限运行的命令行窗口。
具体操作是点击“开始”,点击“所有程序”,点击“附件”,右键点击“命令提示符”,然后点击“以管理员权限运行”。
在 Windows 8/10 中,前往“开始”界面。键入“cmd”, Windows 会找到“命令行提示符”。右键点击“命令提示符”,选择“以管理员权限运行”。
如果要求输入管理员密码或确认,输入密码,或点击“允许”。
输入 regsvr32 “filename“.dll 然后按下回车。
将 32 位 DLL 文件注册到一台 64 位 Windows 上:
按前述方法打开一个提升权限运行的命令行窗口。
在命令行中键入:
cd c:\windows\syswow64\
然后键入以下命令并回车:
regsvr32 c:\windows\syswow64\”filename“.dll
解决方法三
下载一个驱动精灵,点击系统检测,电脑缺少什么文件都可以检测出来。检测好了之后软件会提示需要安装什么,提示:必要系统组件几个等等,然后点击进去安装就是了。安装完成记得重启一下,就修复完成了!
再次测试
再次测试之后,上面的保存已经不存在了,但是出现了其他报错。
SystemError: Negative size passed to PyUnicode_New
经查询之后发现是编码报错,查询到的几乎所有帖子都是说将utf-8编码改为gbk编码
考虑过后发现工作量非常大,毕竟代码里面涉及到了路径参数。
最后我考虑有没有可能win7的版本太老,而我们目前用的python版本太过于超前,才导致的不兼容问题。
验证猜想
我重新创建一个python虚拟环境win7py python==3.5
随后在这个虚拟环境下使用Pyinstaller工具再次打包项目,再迁移到win7系统上面就发现可以运行
本文标签: 不兼容 pyinstaller 亲测已
版权声明:本文标题:Pyinstaller打包至win7不兼容问题,亲测已解决 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732373142h1536137.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论