Pyinstaller打包失败解决办法

Pyinstaller 打包失败解决办法

在日常生活中我们写的python脚本需要在别人的电脑上使用,但别人的电脑又没有python环境,这时候将我们写的Python脚本打包成“.exe”可执行文件,这样就无需在另一台电脑上配置相应的环境了。

python提供了一个打包的库叫做Pyinstaller,理想情况下可以实现一键打包。然而在实际打包中会存在下列问题:

  • 依赖库太多,打包耗时长(将一些没用上的库一起打包上去)
  • 打包完的exe文件太大
  • 打包完的exe文件打不开 (打开后控制台闪了一下就关闭了,程序无法运行)
  • 可能会出现各种文件缺失
分享一下,我使用Pyinstaller打包脚本出现的问题

cmd 使用 pyinstaller -F 文件名.py

打包成功后双击打开直接闪退,连报错都看不到。。。。

这里分享一个看到报错信息的办法:
还是打开 cmd cd 命令进入打包文件所在文件夹,再输入文件名.exe,最后回车就可以看到了

下面是我的报错(省略中间一部分):

Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\pyiboot01_bootstrap.py", line 151, in __init__
  File "ctypes\__init__.py", line 373, in __init__
FileNotFoundError: Could not find module 'libiconv-2.dll'. Try using the full path with constructor syntax.

  File "site-packages\PyInstaller\loader\pyiboot01_bootstrap.py", line 153, in __init__
__main__.PyInstallerImportError: Failed to load dynlib/dll 'C:\\Users\\27540\\AppData\\Local\\Temp\\_MEI162522\\pyzbar\\libiconv-2.dll'. Most probably this dynlib/dll was not found when the application was frozen.
[10832] Failed to execute script Filename_tool

可以看到 FileNotFoundError: Could not find module 'libiconv-2.dll’

少了 libiconv-2.dll

我去百度寻找解决办法,让我去根据报错缺啥补啥,可以看到:C:\Users\27540\AppData\Local\Temp\_MEI162522\pyzbar\libiconv-2.dll’. Most probably this dynlib/dll was not found when the application was frozen.
那我乖乖的在 Temp_MEI162522\pyzbar\libiconv-2.dll 补充文件,再重新打包

同样是这个报错。。。。。。甚至想放弃。。。。

几天后我看到一篇文章在PyCharm创建虚拟环境的文章
就想用虚拟环境打包会不会成功呢,在网上查阅相关资料后,找到创建虚拟环境的办法

最后用虚拟环境打包还是有报错,同样是缺了 libiconv-2.dll 但是这次根据报错去补充缺失文件,就能够成功运行;

具体创建过程见下列步骤:

1.配置虚拟环境

1.1打开PyCharm,新建项目
在这里插入图片描述
1.2点击New Project
在这里插入图片描述
1.3Location:选择一个空文件夹
在这里插入图片描述
1.4选择一个编译器
在这里插入图片描述
1.5导入需要的库(可以找到第三方库直接复制进去)
在这里插入图片描述
1.6把需要打包的.py文件复制到venv文件夹下

2.激活虚拟环境

2.1 cd到该环境下的Scripts路径下,使用activate命令激活环境。看到出现(虚拟环境名),如(venv),说明激活虚拟环境成功。
在这里插入图片描述
2.2在虚拟环境下打包

  1. cd 到项目文件夹下
  2. 输入Pyinstaller -p 虚拟环境的Scripts路径 py文件名,例如:Pyinstaller -p D:\个人数据\new_test\venv 文件名.py

2.3 打包需要等待一会,打包成功后,可以看到生成了dist、build、文件名.spec等文件。其中有用的只有dist一个文件,.build和.spec文件可以直接删除。进入dist文件夹找到.exe文件,双击运行该可执行文件。
2.4 双击.exe文件运行,如果还出现闪退,重复上述方法查看报错信息
2.5都没有问题后就可以直接使用了,发给别人用好像需要整个dist文件夹一起发过去才能使用(我也不清楚)有兴趣可以自己尝试一下

以上就是全部内容啦,第一次写博客,有问题可以评论区交流。

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pyinstaller打包失败可能有多种原因。根据引用提供的信息,其中一个可能的原因是文件缺失错误(FileNotFoundError),即在打包过程中,某些文件没有被正确地包含在最终的exe文件中。在这个特定的例子中,缺失的文件是位于"lib\\site-packages\\pyyaml-5.3.1-py3.6-win-amd64.egg\\EGG-INFO\\top_level.txt"路径下的文件。 另一个可能的原因是模块找不到错误(ModuleNotFoundError),即在运行exe文件时,某些模块无法被正确地导入。在这个例子中,缺失的模块是"statsmodels.__init__._version"。 要解决这些问题,你可以尝试以下几个步骤: 1. 确保你的打包命令(pyinstaller -F -w -i xxx.ico xxx.py)正确无误,并且指定了正确的输入文件和图标文件。 2. 检查所需的文件和模块是否都存在于你的项目中,并且确保它们被正确地导入和使用。 3. 检查你的环境是否缺少某些依赖库或模块。根据引用的提示,你可能需要安装pywin32或pypiwin32版本。尝试安装或更新这些依赖库,并确保它们能够正确地被导入和使用。 4. 如果问题仍然存在,尝试搜索相关错误信息,看看是否有其他人遇到过类似的问题,并且有没有解决方案可供参考。 总之,pyinstaller打包失败可能是由于文件缺失或模块找不到等问题所致。通过仔细检查你的打包命令、确保所需的文件和模块存在并正确导入、安装或更新依赖库,并参考其他人的解决方案,你应该能够解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值