python 使用pyinstaller 打包scrapy中遇到的坑

博主在使用PyInstaller打包Scrapy项目时遇到了诸多问题,包括环境配置、错误处理和打包方式等。坑1指出不要在PyCharm中安装PyInstaller,而应在CMD中用pip进行。坑2提到需升级setuptools以解决AttributeError。坑3讨论了在不同环境下运行exe的兼容性问题。通过实验,博主发现可以简化启动方式,并建议使用CrawlerProcess(get_project_settings())。尽管尝试了hook文件和spec文件打包,但体积过大且仍存在模块缺失。此外,使用UPX压缩可能会被360误报为病毒。

打包scrapy果然好痛苦啊!!!

坑1:

不要用pycharm 下载PyInstaller包 ,不然在cmd里就算你设定好了环境变量,也是调用不了,最后我是用pip 删除再安装解决的!

坑2:

 无论修改什么,还是会报出AttributeError: 'str' object has no attribute 'items'的问题,发现原来是setuptools比较老,方法是:

 更新一下 pip install --upgrade setuptools

坑3:

如果用系统的cmd运行打包后的exe,有可能会莫名其妙的报错:

import scrapy.downloadermiddlewares.chunked

不能import 这个模块

后面我用pycharm的 Terminal 跟直接运行exe,虽然也有报错,但能运行!

 

发现:

1.很多教程启动scrapy,都是:

from douban.spiders.spider import DoubanSpider

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())
process.crawl(DoubanSpider)
process.start()

后来我试了下,还可以这样启动:

from subprocess import call
call("scrapy crawl douban",shell=True)

并没有报错,明显更简单啦!!!

### 使用 PyInstaller 打包包含 Emoji 支持的 Python 应用程序 为了成功使用 PyInstaller 将带有 emoji 功能的应用程序打包为 `.exe` 文件,需遵循特定步骤来确保所有依赖项被正确处理。 #### 准备工作 安装必要的工具 `PyInstaller` 是第一步。通过命令行输入如下指令完成安装: ```bash pip install pyinstaller ``` #### 修改 spec 文件以适应 PyQt5 和 Emoji 插件需求 对于涉及图形界面特别是使用了 PyQt5 的应用来说,在创建可执行文件前调整 spec 文件非常重要。这一步骤可以解决潜在的缺失问题并加入额外的支持资源路径。具体操作是在 spec 文件内的 `pathex` 列表中添加相关目录地址[^2]: ```python a = Analysis(['your_script.py'], pathex=[ 'C:\\Users\\86132\\Desktop\\qt_chat\\emoji', 'C:\\Program Files\\Python37\\Lib\\site-packages\\PyQt5', 'C:\\Program Files\\Python37\\Lib\\site-packages\\PyQt5\\Qt\\bin', 'C:\\Program Files\\Python37\\Lib\\site-packages\\PyQt5\\Qt\\plugins' ], ... ) ``` #### 添加数据文件至最终 EXE 中 如果应用程序中有静态资源(比如图片、字体等),则需要显式声明这些资源以便它们能被打包进去。针对表情符号的支持可能涉及到特殊的字体或图像集,应该利用 `add_data()` 方法指定其位置和目标路径[^1]: ```python from pathlib import Path datas = [ (str(Path('path/to/emojis').resolve()), './emojis') ] a = Analysis( ['your_script.py'], datas=datas, ... ) ``` #### 构建过程中的注意事项 构建过程中可能会遇到一些挑战,尤其是当项目结构较为复杂时。例如,某些第三方模块不会自动识别所需的二进制文件或其他辅助组件;这时就需要手动干预,按照官方文档指导或是社区经验来进行适当设置。 #### 实际案例分析 考虑到实际应用场景下的多样性,这里提供了一个关于如何集成 Scrapy 爬虫框架与 Tkinter GUI 并实现进度条功能的例子。此例子展示了怎样让爬虫的结果实时反馈给用户界面上的一个树状视图控件,并且能够动态监测任务状态以及控制循环结束条件[^4]。 #### 关键技术点总结 - **PyInstaller**: 主要用于将 Python 脚本转化为独立运行于 Windows 上的 .exe 文件。 - **Spec File Customization**: 对于复杂的工程项目而言,定制化的 spec 文件有助于更好地管理外部依赖关系。 - **Data Inclusion Strategy**: 明确指出哪些非代码资产应当随同主程序一起发布出去,从而保障完整的用户体验。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值