当前位置: 首页 > news >正文

耗时3小时,把这两天做好的爬虫程序,用Python封装成exe文件

先执行命令如下:

pip install pyinstaller
py -m PyInstaller --log-level=DEBUG --add-data "config.ini;." nmpa_gui.py

很快在dist目录下就有生成一个nmpa_gui文件夹,运行 nmpa_gui.exe,报错:

1️⃣初始化爬虫…
程序执行出错: ‘database’

解决办法:需要把config文件(数据库配置信息)拷贝一份到nmpa_gui文件夹下。继续报错:

2️⃣初始化爬虫…
程序执行出错: No localization support for language ‘eng’

解决办法:手动复制 locales 文件夹到项目目录并打包(简单直接)
找到你当前环境中安装的 MySQL Connector 的 locales 文件夹:

默认路径为:

C:\Users\<你的用户名>\AppData\Roaming\Python\Python311\site-packages\mysql\connector\locales

依旧报错:

3️⃣初始化爬虫…
程序执行出错: Authentication plugin ‘mysql_native_password’ is not supported

将 _mysql_connector.pyd 复制到项目目录,文件源路径在

C:\Users\<你的用户名>\AppData\Roaming\Python\Python311\site-packages

建议在你的项目根目录下创建一个文件夹,比如 internal_libs/,然后把 _mysql_connector.pyd 放进去,另外还需新建文件夹dlls,将libmysql.dll 拷贝到下面。

同时修改.spec文件,主要是 binaries,datas,hiddenimports 这三处:

# -*- mode: python ; coding: utf-8 -*-import os
from PyInstaller.utils.hooks import collect_data_files# 收集 mysql connector 的语言资源(eng)
mysql_locales = collect_data_files('mysql.connector', subdir='locales')block_cipher = Nonea = Analysis(['nmpa_gui.py'],pathex=[os.path.abspath(".")],binaries=[('internal_libs\\_mysql_connector.cp311-win_amd64.pyd', '.'),('dlls\\libmysql.dll', '.')  # 添加 libmysql.dll 支持],datas=[('config.ini', '.'),('locales', 'mysql\\connector\\locales')] + mysql_locales,hiddenimports=['mysql.connector.authentication','mysql.connector.locales.eng.client_error','mysql.connector.connection_cext','mysql.connector.plugins.mysql_native_password',  # ⬅️ 关键:显式导入认证插件],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,optimize=0,
)pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='nmpa_gui',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,  # 保持控制台输出便于调试认证问题disable_windowed_traceback=True,argv_emulation=False,
)coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='nmpa_gui',clean=True,
)

对了,每次重新打包前,建议先清一下缓存,bat命令如下:

@echo off
echo 正在清理 PyInstaller 缓存...
rmdir /s /q build dist __pycache__ __pyinstaller
del /q *.pyc *.pyo *.spec
echo 清理完成。

最终使用如下打包命令:

py -m PyInstaller --noconfirm nmpa_gui.spec

至此,顺利打包成功并成功运行!
在这里插入图片描述
怎么样,看着是不是瞬间就高大上一些了,Python真是利器!!!后续可以再放出来一些配置,比如一批抓取多少页后休息,每插入一页后休息多久,一批完成后休息多久等等!

P.S.因为Cursor又到期了,这点小问题,懒得再去麻烦他, 这次打包中遇到的错误,尤其是困扰比较久的问题3️⃣,最终在阿里通义灵码的技术支持下,得以解决,在此表示感谢,隔壁那位CODEBUDDY和大傻子差不多!

http://www.xdnf.cn/news/1053811.html

相关文章:

  • 构建高性能日志系统:QGroundControl日志模块深度解析
  • 【JavaEE】(2) 多线程1
  • 第3章 C#编程概述 笔记
  • 计算机求职提前批/求职什么时候投递合适
  • 宝塔部署.net项目(nopcommerce)
  • K-Means算法详细解析:从原理到实践
  • C++ STL常用二分查找算法
  • 2025年品牌定位推荐排行榜:锚定市场航向,解锁品牌增长新势能
  • Python+QT远程控制助手-ver2
  • 《注解的江湖:一场元数据的“宫斗剧”》
  • 每日算法刷题Day32 6.15:leetcode枚举技巧7道题,用时1h10min
  • 计网复习知识(17)应用层
  • jQuery 3D透明蓄水池状柱状图插件
  • IDA动态调试环境配置全流程
  • 【Markdown】基础用法汇总(标题、列表、链接、图片、加粗斜体、上下角标、引用块、代码块、公式)
  • 学习日记-day30-6.15
  • Linux安装LLaMA Factory
  • Netty 全面深入学习指南
  • 项目实训个人工作梳理
  • 【算法 day03】LeetCode 203.移除链表元素 | 707.设计链表 | 206.反转链表
  • nodejs中Express框架的基本使用
  • ​​信息系统项目管理师-项目范围管理 知识点总结与例题分析​​
  • Claude Code 实用教程——使用方法详解
  • 庙算兵棋推演AI开发初探(8-神经网络模型接智能体进行游戏)
  • 文本预测和分类任务
  • [笔记] 基于esp32s3用GUI-Guider-1.9.1-GA开发LVGL界面
  • 认识电子元器件之磁传感器
  • Spring有代理对象的循环依赖时,如何确保代理对象能够正确持有原始对象的所有属性赋值结果?
  • 234. 回文链表
  • SQL 增删改查 —— 笔记篇