文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python打包exe程序避坑指南

2024-12-03 05:32

关注

写完一个python程序之后,如何才能快速地将代码分享给别人,尤其对于初学者来说,能把自己的代码包装成一个exe程序并传递到别人电脑上运行,那是一件非常有成就感的事。好在python自带简易打包程序,让很多人能过一把当程序员的瘾。目前流行的打包库就有py2exe、pyinstaller和cx_Freeze。

但python的运行环境复杂,编写的程序往往是借助了很多附加的功能库来实现,对简单的打包会造成一定困难。本人也是在经历了多次的打包失败和成功的经历之后,觉得pyinstaller的成功率最高,所以有必要针对pyinstaller写一篇避坑指南。

一、安装

使用python的pip安装,在cmd窗口,使用pip install pyinstaller,即安装完成。然后配置好环境变量。

二、使用

例如在程序6.py所在文件夹打开cmd窗口。一般输入pyintaller -F **.py(命令符的具体含义在下文中解释),回车即开始打包。顺利的话,会出现打包成功的反馈,如下图,这时,就说明文件已经打包完成了。dist文件夹里面就放着打包完的exe程序,使用时剪切出来就行了。如果运气好或者本身程序比较简单,那这个exe就能在任何电脑运行了。

但往往没这么容易,pyinstaller在使用中有很多坑,打包的开始,也是修补的开始。

三、遇坑填坑

1.文件路径中不能出现中文

否则会在打包过程中直接出现如下报错。这时只要把所在文件夹和程序名字改成英文或者数字重新打包即可。可以打包完再将exe的名字改回来。

2.缺少导入hook文件

有时即使打包成功了,在运行exe时候,还是会有报错并闪退。

如果报错为:FileNotFoundError: [Errno 2] No such file or directory:……

那是缺少hook文件,要在pyinstaller的安装路径里的hook增加一个自定义的hook。hook文件的命名规范为: hook-【库名】.py。例如以我在打包程序中用了结巴分词这个功能库为例,那我要建立一个hook-jieba.py,并写入: 

  1. from PyInstaller.utils.hooks import collect_data_files  
  2. datas = collect_data_files("jieba") 

然后放到~\Lib\site-packages\PyInstaller\hooks中去,再次运行pyinstaller打包既可解决该问题。

3.缺少导入功能库模块

如果报错为 no moduler named “pandas._libs.skiplist”,那就要手动import库,解决方法打开生成的spec文件,找到 hiddenimports=[],加上要添加的库,将其改动如下,hiddenimports=["pandas._libs.skiplist"],然后删除dist里面的exe文件,重新用spec文件打包,pyinstaller **.spec。即可解决该问题。

四、花式打包

涉及到打包的几个重要参数如下。

五、结语

将程序打包成exe发送出去或者供用户下载,是一个比较传统的传播方式,并且比较笨重,其实用简单的H5或者小程序就能实现一样的效果,对用户而言也更方便,也是朝着轻应用的方向发展。此外,对于专业用户还能通过github和api等方式传播。随着网络观念的深入人心和5G时代到来,相信有更好的方式能更安全、快捷、私密地将工具的功能传递给所需要的用户。 

 

来源:Python中文社区(ID:python-chia)内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯