哈哈!今天是我在2023年发布的第一篇文章呀!

这两天,我在做一个爬虫项目。因为我做好后准备给我的朋友看看,但我朋友没有 Python 环境。所以,只好想办法把 .py 打包成 .exe 。

在网上搜了一下,发现目前相对主流的有 Pyinstaller 、 Py2exe 等。最终我选择了 Pyinstaller 。

我是用的 PyCharm 。在“终端”输入:

pip install pyinstaller

即可安装。


安装完成后,你就可以开始打包了。最快速的打包方式便是这样:

pyinstaller 文件名.py

如果看到 “successfully” 一词就代表打包“成功”了。

如此, Pyinstaller 就会在你的项目目录下生成 build文件夹 、 dist文件夹 与一个 文件名.spec。

其中, build文件夹 存放的是打包时的临时文件,可以删除; dist文件夹 下的文件夹便是你打包出来的,其下的 文件名.exe 是可执行的(注意!这里不能单独运行这个文件,它是有依赖的!后文还会介绍其它方法!);而 文件名.spec 是配置规范文件,它说明了软件包如何被配置、打了哪些补丁、安装哪些文件、安装到哪里等等。

现在你就可以在文件夹下运行 .exe 文件了!


但是,在我们实际开发过程中,会有各种各样的需求,这里就需要配置参数了。

常见参数:

-c(默认) 显示控制台(命令行窗口,即黑框框)
-w 不显示控制台
-D(默认) 生成一个包含 .exe 文件的目录,所有依赖项和 .exe 文件位于同一目录下
-F 将所有依赖项打包为单独的、无依赖的 .exe 文件。
-i 指定应用图标( .ico 文件)
-n 指定生成的目录、 .spec 文件、 .exe 文件的名字
-p 设置导入路径

这里说一下:建议大家在调试时都不要使用 -w 参数,这样在看一些异常信息时会更加方便;另外单文件运行与目录下运行相比速度更慢(不止慢一点),所以这里要看个人情况去填写参数; -p 参数是当你在程序中引入了某个包(通过 import ),那么你就需要使用 “-p 引入的包的路径”,如有多个路径,则用分号分隔。

举个例子。源文件叫 main.py ,图标为 ico.ico ,这是一个爬虫程序,引入了 requests 包,需要控制台,程序名为 crawler ,追求速度,则输入:

pyinstaller -p D:\demo\venv\Lib\site-packages\requests -n crawler -i ico.ico -c -D main.py

好的呢!现在你就可以发给你的好朋友了呢!

但是……我以我的亲身经历告诉大家:似乎并不行。

最开始,我选择了打包为单文件,但发现用 -p 参数导入了,但和没导入一模一样,都会报错(这里可能是我自己的问题)。于是,我改为了生成一个包含 .exe 文件的目录便解决了第一个问题。所以,我个人是比较推荐选择生成一个包含 .exe 文件的目录的(使用 -D )。

弄好后,因为我自己的电脑有Python环境,以防万一,我准备放到我们家老电脑上试试(我们家老电脑系统是 win7 / 32位 )。结果,打开程序后先是报错:

无法启动此程序,因为计算机中丢失 api-ms-win-core-path-|1-1-0.dll。尝试重新安装该程序以解决此问题。

然后爆出错误信息,还没看清就闪退了。

好吧我一脸懵啊!

对于闪退的问题,只用打开 cmd 执行程序就能看到报错信息了。

但对于第一个问题,可以想办法下载这个动态库,放在系统指定的位置,但这个并不能直接解决问题。还有三种方法:一是将源文件在 32位 的系统上生成为 .exe 文件,二是在 64位 系统上下载 32位 的虚拟机进行生成,三是使用 32位 的 anaconda 。具体可参考关于python打包py文件成exe文件_星浩前进中的博客-CSDN博客_py打包成exe调用其他包需要调用其他csv。 而对于报错信息,如果按上述过程重新生成后还是存在,我也就无能为力了。


我之所以说Pyinstaller是“神”队友,是因为它的操作较简单,只是各种各样的坑有点多。但是其实只要把出现这些坑的原因、解决方法搞清楚,那使用起来就是非常方便的!


祝大家元旦快乐!

Pyinstaller - 你的“神”队友相关推荐

  1. 游戏AI玩伴,是“神队友”还是“猪队友”?

    "一代英豪"暴雪迎来了自己的暴风雪. 2月13日,动视暴雪公布了2018年全年财报.财报显示,暴雪第四季度营业收入仅为28.4亿美元,低于华尔街分析师预期的30.4亿美元.在公布了 ...

  2. 游戏中的AI玩伴,会是“神队友”吗?

    文 | 颜璇 来源 | 智能相对论(ID:aixdlun) "一代英豪"暴雪迎来了自己的暴风雪. 2月13日,动视暴雪公布了2018年全年财报.财报显示,暴雪第四季度营业收入仅为2 ...

  3. IT痴汉的工作现状52-神队友与猪队友

    "快速闪电"是我们明天要上线功能的代号,由Y team.T team和S team三个团队共同完成.我在T team,是需求的发起方:Y team是被调用方,主要功能在Y team ...

  4. 结营答辩!28天!Datawhale助力公益AI一起学,点亮最暖寒假!

    创新公益 28天前,为抵抗疫情,高校学子纷纷驻守在家,不能返校.不能去图书馆.在家如何高效学习,应对科研升学.求职就业的挑战? 我们觉得,大家需要一门好课,也需要好的学习氛围,更需要从学习到实践到就业 ...

  5. 35岁,工作十几年,被开除15次,面试被拒200多次,还有必要继续做程序员吗?...

    人生路上总有诸多不幸,我们写过许多程序员的悲惨故事,有人中年失业,有人婚姻不幸,有人加班猝死......今天给大家带来的是一个残疾程序员的故事. 一位因听力障碍导致沟通困难的程序员发帖自述:在十几年的 ...

  6. 秋招要跪?不怕!领走这份机器学习求职攻略

    AI人才严重缺乏,2018年秋招提前批的"AI人才争夺战"已经开启,许多有意跳槽的小伙伴也在跃跃欲试.但是,你真的准备好了吗? 为了拿到Dream Offer,通过面试必然十分关键 ...

  7. Week1 Team Homework #2 from Z.XML-Introduction of team member with photos

    <Z.XML Introduction of each team member, with photos Z=周敏轩; X=肖俊鹏&薛亚杰; M= 毛宇 & 马辰; L=  李孟 ...

  8. Mac上使用Jenv管理多个JDK版本

    使用Java时会接触到不同的版本.大多数时候我在使用Java 8,但是因为某些框架或是工具的要求,这时不得不让Java 7上前线.一般情况下是配置JAVA_HOME,指定不同的Java版本,但是这需要 ...

  9. Sublime Text 2安装汉化破解、插件包安装教程

    Sublime Text作为一款轻量.简洁.高效.跨平台的编辑器.支持N多种语言,受工程师所爱!这里教大家如何安装破解Sublime Text 2.0.2,并教大家如何安装包控制器(package c ...

最新文章

  1. Angular4.0从入门到实战打造在线竞拍网站学习笔记之四--数据绑定管道
  2. 最简单的t-SNE上手使用
  3. 新手学python还是c语言_py和c语言究竟新手该学哪个?
  4. python好学吗mooc中文网-Python全栈工程师
  5. 如何在Linux中查看所有正在运行的进程
  6. cvs update 用法_WinCVS的配置与使用方法
  7. Wireshark网络抓包(一)——数据包、着色规则和提示
  8. 修改计算机用户权限,如何修改一个电脑账户为最低权限
  9. 【Unity开源项目精选】AirSim
  10. 机器视觉开源处理库汇总-介绍n款计算机视觉库/人脸识别开源库/软件 -几种图像处理类库的比较-视觉相关网站...
  11. 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
  12. mysql数据库myd文件丢失怎么_mysql数据库的恢复(frm、Myd、MyI文件仍存在)
  13. 2003服务器安全攻略
  14. c语言 字符转换成ascii吗,C语言字符转换ASCII码
  15. 概率论考点总结类型27 上侧α分位点
  16. SIM卡交换方案的工作原理
  17. 计算机网络实验:实验三 路由器的基本配置
  18. python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)
  19. L-LSP和E-LSP介绍
  20. 易经中的企业管理思想[转帖] 来源: 中大管理论坛 梁育民

热门文章

  1. 查看笔记本SN序列号
  2. 【Web前端HTML5CSS3】16-过渡与动画
  3. HTML实现页面过渡
  4. Unity Android平台接入支付宝SDK
  5. 工程实践_Ubuntu16.04使用whl文件安装PyTorch教程
  6. filezilla linux 64位,FileZilla 64位
  7. 思维导图–云笔记测试的利器(转)
  8. 实例!自动化物流系统规划设计(立库,输送,分拣,WMS)
  9. matlab 经济计量工具箱,matlab空间计量经济学工具箱使用中的问题
  10. Brave浏览器保护用户隐私第2招:第三方页面垃圾过滤