爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 28511|回复: 10

[经验总结] 使用pyinstaller库封装python程序遇到的几个问题及解决方法

[复制链接]

新浪微博达人勋

发表于 2020-7-9 09:24:52 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
      本人在使用pyinstaller封装python程序成exe文件时,遇到了一些问题,网上查了一些方法,有的好使,有的不好使。结合自身情况,将各种方法测试、整理一下,再加上一些个人的理解,分享到论坛中。这里所有的解决方法都测试过。
本人使用的是pycharm。如何安装pyinstaller在这里就不说了。
(引用请注 来自明气象家园robin_ouc)

语法
pyinstaller –F **.py  (生成一个exe文件) 或者
pyinstaller –D **.py  (生成文件夹,可执行文件在dist/)

############################################################

问题1主文件中引入了第三方库,打包不成功。解决方法:pycharm似乎比python自带的IDLE好用。1)在pycharmTerminal窗口输入pyinstaller –F **.pypyinstaller –D **.py2)通过spec文件:第一次打包不成功,修改生成的spec文件,在a = Analysis()中,pathex之前加入各依赖库的路径(是安装后的py文件路径,不是whl文件路径)。
############################################################

问题2:打包出错python  pyinstaller 'str'object has no attribute 'item'解决方法:更换setuptools版本,setuptools版本并不是越新越好,还要考虑到与pyinstaller匹配问题,见问题3
############################################################

问题3:生成exe成功,运行时报错:failed to execute script pyi_rth_pkgres解决方法:更改pyinstaller版本。pyinstallersetuptools这两个第三方库的版本要匹配,需要尝试,且64位和32位系统不一样在个人电脑已经验证过可以匹配的两个版本:1. 64位:pyinstaller3.6, setuptools28.8.02. 32位:pyinstaller3.5, setuptools43.0.0。貌似setuptools版本太高就不稳定。

############################################################

问题432位系统,生成的exe 移植到其他电脑上,运行出现“无法定位程序输入点ucrtbase.terminate于动态链接库”解决方法:查了一下,是系统的问题,缺少相应的库,可以安装对应的库;另一种解决办法(推荐):用pyinstaller –D **.py生成的文件夹移植于其他电脑上,生成的文件夹中已经包含了一些需要的库,不会出现此问题。


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-7-22 17:05:29 | 显示全部楼层
请问 python3.8 下安装pyinstaller是如何成功的?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-7-22 22:20:22 | 显示全部楼层
bahzhong 发表于 2020-7-22 17:05
请问 python3.8 下安装pyinstaller是如何成功的?

我用的是3.6的,安装都安装不成功吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-25 11:08:17 | 显示全部楼层
请教一下楼主,有没有碰到过打包成功,但是exe运行出错Importerror: DLL load Failed:内存位置访问无效。

感觉是import包  没有打进去,但不知道怎么解决
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-28 21:56:54 | 显示全部楼层
zqf_23 发表于 2021-1-25 11:08
请教一下楼主,有没有碰到过打包成功,但是exe运行出错Importerror: DLL load Failed:内存位置访问无效。
...

在打包成功的本机上运行失败?这倒是没遇到过。直接运行.py文件没有出现问题吧?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-31 23:02:33 来自手机 | 显示全部楼层
基本放弃了打包exe,可以安装python以后,写一个bat的批处理程序,照样实现双击打开的功能
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-1 19:53:33 | 显示全部楼层
jl2587t 发表于 2021-1-31 23:02
基本放弃了打包exe,可以安装python以后,写一个bat的批处理程序,照样实现双击打开的功能

在本机上运行当然没问题,在其他未安装Python或者库没有配齐的机器上就需要了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-2 08:51:24 | 显示全部楼层
robin_ouc 发表于 2021-2-1 19:53
在本机上运行当然没问题,在其他未安装Python或者库没有配齐的机器上就需要了

打包基本成功不了,能成功的也是因为包含的库比较简单,单单一个matplotlib就不行了,涉及C++14.0
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-2 21:16:02 | 显示全部楼层
jl2587t 发表于 2021-2-2 08:51
打包基本成功不了,能成功的也是因为包含的库比较简单,单单一个matplotlib就不行了,涉及C++14.0

那可能咱们遇到的情况不一样,我用matplotlib,basemap等库就都可以成功
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-2 21:19:11 | 显示全部楼层
robin_ouc 发表于 2021-2-2 21:16
那可能咱们遇到的情况不一样,我用matplotlib,basemap等库就都可以成功

那你运气比较好,basemap在py3.x已经不能用了,前几天想打包,里面带matplotlib,打包可以成功,但是运行有问题,最后放弃了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表