耗时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.pswp.cn/diannao/87736.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下nginx访问路径页面

第一步&#xff1a;通过Xshell在虚拟机中下载nginx sudo apt-get install nginx 第二步&#xff1a;进入nginx配置页面 cd /etc/nginx 我这里创建了一个html文件夹 在进入去创建页面并且重新加载 boahuboahu-VMware-Virtual-Platform:/$ cd /etc/nginx boahuboahu-VMware-Vir…

三维视频融合怎么弄?三步实现精准投射与自由修剪

分享大纲&#xff1a; 1、场景引入&#xff1a;为什么你的三维场景视频融合效果不理想&#xff1f; 2、解决方案&#xff1a;捷码视频融合三步操作指南 3、捷码平台&#xff1a;低代码构建动态三维视界 在智慧城市中的安防领域&#xff0c;将实时视频与三维场景融合已是大势需求…

探索阿里云网络与CDN产品:解锁高效网络体验

阿里云网络产品概述 在云计算蓬勃发展的当下&#xff0c;网络作为连接计算、存储与用户的关键纽带&#xff0c;其重要性不言而喻。阿里云作为全球知名的云计算服务提供商&#xff0c;凭借其丰富且强大的网络产品体系&#xff0c;为企业数字化转型筑牢了坚实的网络根基&#xf…

深入理解C语言指针(二):从数组到多级指针的全面解析

作为C语言的核心概念&#xff0c;指针常常让初学者感到困惑。本文将从数组与指针的关系入手&#xff0c;逐步揭开指针在数组操作、函数传参以及多级指针中的神秘面纱&#xff0c;帮助你建立系统的指针知识体系。 一、数组名的双重身份&#xff1a;首地址与整体标识 在C语言中&a…

Windows PPT/word怎么pdf不降低分辨率,插入可编辑

Windows PPT/word怎么pdf不降低分辨率 下载软件Inkscape&#xff1a;Inkscape - Draw Freely. | Inkscape 然后使用Inkscape将你的PDF转为svg, 然后用office的PPT打开&#xff0c;将svg复制进PPT/word&#xff0c;然后保存就可以了 插入可编辑的&#xff08;只能通过Mac的才可…

vue3 select 选中值时,即获得id,也获得name值并且输入框正确选中

1.获取 name和id 直接绑定对象 将 value 绑定为整个对象&#xff0c;通过 change 事件获取完整数据 value-key 绑定唯一标识 value 绑定为整个对象&#xff0c;通过 change 事件获取完整数据 <el-select v-model"selectedItem" change"handleChange"…

什么是Seata

Seata的实现原理主要围绕其核心架构&#xff08;TC/TM/RM&#xff09;和事务模式&#xff08;如AT、TCC等&#xff09;展开&#xff0c;通过协调全局事务与分支事务的协作保证数据一致性。以下是核心实现原理的详细解析&#xff1a; ⚙️ ​​一、核心架构协作机制​​ Seata通…

linux ARM64架构用户空间和内核空间的区分

一、ARM64 架构地址空间的「黄金分割」 ARM64&#xff08;ARMv8-A&#xff09;采用 48 位虚拟地址&#xff08;Linux 默认配置&#xff09;&#xff0c;总空间为 256TB&#xff0c;分为高低两个 128TB 区域&#xff1a; 1. 地址空间整体布局 虚拟地址空间&#xff08;48位&a…

51单片机重要知识点1

1. 在读IO口状态前必须先写该IO口1. 即让下拉MOS高阻断路。如&#xff1a; P221; KEYP22; 复位状态各IO口1的。另外大多数情况都不会IO口即做输入又做输出的。设计思想永远不要复杂化高难度编程&#xff0c;而要简单明了。 2.

【解析法与几何法在阻尼比设计】自控

解析法与几何法在阻尼比设计中的详细对比 一、解析法&#xff1a;基于数学方程的定量求解 核心思想&#xff1a;通过特征方程与根轨迹条件建立代数关系&#xff0c;直接求解满足阻尼比要求的系统参数。 1. 适用场景 二阶系统或可简化为二阶系统的高阶系统&#xff08;主导极…

搭建pikachu靶场

文章目录 一、pikachu是什么?二、搭建环境1.下载链接三、安装教程phpstudy安装配置pikachu 靶场安装配置总结一、pikachu是什么? Pikachu 靶场是一个专门为网络安全爱好者和学习者设计的 Web 安全靶场。它旨在帮助用户学习和实践常见的 Web安全漏洞和攻击手法。Pikachu 靶场通…

OpenStack Dashboard在指定可用域(Availability Zone)、指定节点启动实例

通过OpenStack Dashboard在指定可用域&#xff08;Availability Zone&#xff09;中创建实例的完整配置&#xff0c;涵盖可用域创建、节点管理、关系与限制的详细步骤&#xff1a; 一、可用域&#xff08;Availability Zone&#xff09;的概念与关系 0.指定域、指定节点、指定…

6.时间序列预测的模型部署

6.1实验设置和python版的Azure机器学习SDK介绍 6.1.1 WorkSpace 6.1.2 Experiment 6.1.3 Run 6.1.4 Model 6.1.5 ComputeTarget、RunConfiguration和ScriptRunConfig 6.1.6 Image 和 Webservice 6.2 机器学习模型部署 6.3 时间序列预测的解决方案体系结构部署示例 6.3.1 训练…

加密货币:比特币

比特币&#xff08;Bitcoin&#xff0c;简称BTC是一种去中心化的数字货币&#xff0c;由中本聪&#xff08;Satoshi Nakamoto&#xff09;在2008年提出&#xff0c;并于2009年正式推出。它是首个基于区块链技术的加密货币&#xff0c;旨在实现点对点的价值传输&#xff0c;无需…

【Dv3Admin】应用WSGI启动配置文件解析

在 Django 项目部署中&#xff0c;WSGI 是连接 Web 服务器与应用的标准接口。它负责接收请求、交由 Django 处理并返回响应&#xff0c;是系统上线运行的基础组件。理解其作用&#xff0c;有助于掌握项目的启动流程与部署逻辑。 本文解析 application/wsgi.py 模块的结构与功能…

aws各类服务器编号

在 AWS 中&#xff0c;服务器实例编号通常由一个字母和数字组合而成&#xff0c;每个字母代表不同的实例系列&#xff0c;数字则表示该系列的不同版本或规格。以下是对常见实例系列编号的解释&#xff1a; T 系列&#xff08;突发性能型&#xff09; 特点&#xff1a;T 系列实例…

Netty实战:从核心组件到多协议实现(超详细注释,udp,tcp,websocket,http完整demo)

目录 前言 一、为什么选择Netty&#xff1f; 二、Netty核心组件解析 三、多协议实现 1. TCP协议实现&#xff08;Echo服务&#xff09; 2. UDP协议实现&#xff08;广播服务&#xff09; 3. WebSocket协议实现&#xff08;实时通信&#xff09; 4. HTTP协议实现&#x…

MCP出现的意义是什么?让 AI 智能体更模块化

AI 智能体现在能做的事情真的很厉害&#xff0c;可以思考、规划&#xff0c;还能执行各种复杂任务&#xff0c;而且代码量并不大。这让开发者看到了一个机会&#xff1a;把那些庞大复杂的代码库和 API 拆解成更实用的模块。 不过要让这些智能变成现实世界里真正能用的东西&…

【深度剖析】领信卓越:福耀玻璃的数字化转型(下篇3:阶段成效3-打造从功能部件到数据终端跃迁的智能化产品)

在数字经济持续发展的背景下,企业数字化转型方案成为实现转型的关键。不同行业内的企业因转型动机和路径的差异,其转型成效也各异。福耀玻璃自1983年创立以来,从一家濒临破产的乡镇水表玻璃厂蜕变为全球汽车玻璃行业的领军企业,其发展历程堪称中国制造业的典范。创始人曹德…

告别停机烦恼!AWS EC2实例升级的“零中断”实战方案

引言&#xff1a; “服务器要升级了&#xff0c;今晚得停机维护...” —— 这句话曾是多少运维工程师的“噩梦”&#xff0c;也是业务部门最不愿听到的通知。在追求极致用户体验和7x24小时业务连续性的今天&#xff0c;停机窗口已成为难以承受之重。尤其是在云时代&#xff0c…