Daniel_Zhang 发表于 2021-1-27 20:03:33

百度图片 爬虫制作 + pyinstaller exe 打包

攻略一:

https://fishc.com.cn/thread-189217-1-1.html

攻略二:

https://fishc.com.cn/thread-189464-1-1.html

请注意,攻略一中的源代码在某些特定情况下可能会有 JSONDecError 的问题出现,如需修缮后的代码,请移步以下链接{:10_254:}

https://fishc.com.cn/thread-189424-1-1.html

那么接下来就开始教学,如何给 python 文件进行打包操作,使其能够在其他机器上独立运行{:10_275:}

这里只介绍 windows 系统的教程, mac 的类似

在开始前,请更新一下 pip

pip install --upgrade pip

如果出现提示输入 '--user',则

pip install --upgrade pip -- user

之后我们需要安装 pyinstaller

pip install pyinstaller

如果觉得很慢的话,可以尝试清华镜像源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

确实,b站或者网上有很多的资料有关于如何使用 pyinstaller 的,但是很多坑是不会被提到的{:10_272:}

网上有很多的教程会说要使用 powershell运行 pyinstaller,左思右想也没有发现有什么不同

昨日花了大半天的时间,为了调出 powershell,最后发现 vscode 或者 terminal 也能运行{:10_245:}

在命令行中前往需要合并的 python 文件的路径,请保证所有的 python 文件均放置在同一个文件夹下

此处请确保已经在当前机器中安装 python 文件运行的必要 第三方库,否则即使打包成功, exe 也必将闪退无法运行

pyinstaller 会自动从本地 python 安装路径导入所需要的 第三方库{:10_315:}

如果不需要插入 ico,也就是 exe 的图标,直接在命令行使用

pyinstaller -F py文件1 py文件2 py文件3

例如:

pyinstaller -F main.py

亦或是多个 python 文件的合并

pyinstaller -F main.py func.py tool.py

有几个 python 文件就写几个,建议把主运行文件放在第一位置{:10_329:}

如果出现以下提示,表明打包完成



此处需要注意的是,在封包之前,模块文件中如果含有 if __name__ == '__main__': 之类的东西,请一定要去除,否则模块文件将会被视为执行文件,if __name__ == '__main__':中的内容将会被执行{:10_328:}

如果需要插入 ico,也就是 exe 的图标,直接在命令行使用{:10_309:}

pyinstaller -F -i image.ico py文件1 py文件2 py文件3

image.ico 为 ico的名称

请注意,不要直接修改 png jpeg jpg 后缀为 ico !!!!!!!千万不要!!!!!!否则会出现报错!!!!!!!!!
请自行百度搜索 png 转 ico 在线转换,获得 ico 图标,另外,原 png 文件清晰度和尺寸大小请勿过小,否则可能会获得一坨马赛克

P.s ico 文件请和 python 文件放置在同一个路径下

最终的 exe 文件会出现在 dist 文件夹里,可以单独使用(只需要该 exe 文件即可单独运行,不需要其他任何文件)

那么一定会有人问了,如何才能在 exe 文件里面插入图片

刚刚介绍的是如何插入 ico 图标,并非图片{:10_336:}

这里我们先感谢外网的大佬 ArmindoFlores

请在网址开头加上 https://
stackoverflow.com/questions/51264169/pyinstaller-add-folder-with-images-in-exe-file

在上一步中,我们不难发现,多了一个 build 文件夹,dist 文件夹 和 .spec 文件

右键用 notepad 等方式打开 .spec 文件

如下图{:10_300:}



按照上图操作

在 python 文件里调用 image 的文件中,添加以下代码

def resource_path(relative_path):
    try:
      base_path = sys._MEIPASS
    except Exception:
      base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

注意要 import sys 喔

image 调用时,请使用 resource_path('你的 image 文件名称')

例如:

file = resource_path('image.jpeg')

全部做完后,请保存,关闭 .spec 文件{:10_308:}

此时再在之前的命令行中运行

pyinstaller spec文件

例如:

pyinstaller main.spec

当看到



时,则为打包成功{:10_287:}

完成打包后生成的 exe 文件被放置在 dist 文件中,可以单独使用啦~

再次运行,就会看到可爱的图片了{:10_248:}

如果运行 exe 文件时出现闪退,打开手机的录像功能,打开慢动作拍摄,将闪退那一瞬间,exe 文件显示的报错信息录制下来

一般情况下都是第三方库没有成功导入导致的(no module named xxx),请检查当前机器是否已经安装好所需的第三方库{:10_263:}

Daniel_Zhang 发表于 2021-1-28 17:26:18

唔,最后几行,当看到之前的那个蓝色图片,也就是这个时,打包完成{:10_256:}



抱歉,图没贴出来

Daniel_Zhang 发表于 2021-1-28 17:20:36

emmmmmmm{:10_245:}

鱼的七秒记忆 发表于 2021-1-28 18:37:24

{:10_245:}

鱼的七秒记忆 发表于 2021-1-28 18:37:55

鱼币

Daniel_Zhang 发表于 2021-1-28 23:21:18

{:10_269:}

hornwong 发表于 2021-1-29 11:34:25

{:5_95:}

qq1151985918 发表于 2021-1-29 11:41:37

{:9_227:}

万恶的亚撒西 发表于 2021-1-29 15:35:15

无敌

SomeThing9 发表于 2021-1-30 14:33:42

{:10_256:}

SomeThing9 发表于 2021-1-30 14:34:23

没了吗再来一次{:10_256:}

心驰神往 发表于 2021-1-30 15:57:49

{:10_256:}

心驰神往 发表于 2021-1-30 16:00:50

再来一次

孤不冷cing 发表于 2021-1-30 16:36:08

鱼币嘻嘻

小机灵鬼呀 发表于 2021-1-30 17:18:05

支持楼主{:10_257:}

D小小贱 发表于 2021-1-30 22:18:33

{:10_301:}感谢楼主,进来学习一下,都荒废了

sinapark 发表于 2021-1-31 09:37:48

这个东西后期要用到,收藏了

玖玥 发表于 2021-1-31 10:09:39

111

weiter 发表于 2021-1-31 13:16:14

谢谢大佬!
百度的反扒可牛皮了

Daniel_Zhang 发表于 2021-1-31 14:34:16

weiter 发表于 2021-1-31 13:16
谢谢大佬!
百度的反扒可牛皮了

其实我也就是学完了小甲鱼的 python 入门课程的第一版

剩下的就是看看 CSDN 外站什么的

当然也有一些鱼油的爬虫问题里面的思路启发{:10_248:}
页: [1] 2 3
查看完整版本: 百度图片 爬虫制作 + pyinstaller exe 打包