FastAPI pip版本下DuckDuckGo图片搜索报错及解决方案咨询
问题修复与替代方案
1. 修复代码中的语法错误
你代码的语法错误源于ddgs.images()的调用方式错误:该函数第一个参数是查询字符串,后续参数需以关键字参数形式传入,不能把查询词和关键字参数放在同一括号内。另外你写死了keywords='stop sign',会导致函数参数term失效,建议按需调整。
修复后的代码示例:
from duckduckgo_search import DDGS from fastcore.all import * ddgs = DDGS() def search_images(term, max_images=30): print(f"Searching for '{term}'") # 若需组合固定关键词与传入term,用此写法;仅需term则直接传term query = f"stop sign {term}" # 正确调用方式:查询词作为第一个参数,max_results作为关键字参数 return L(ddgs.images(query, max_results=max_images)).itemgot('image')
2. 解决fastbook覆盖search_images_ddg的问题
针对旧版fastbook破坏函数的问题,可采用以下方案:
- 更新fastbook到最新版:旧版本的函数覆盖问题已在新版中修复,执行命令更新:
pip uninstall -y fastbook pip install --upgrade fastbook - 避免导入冲突:若必须保留旧版,不要使用
from fastbook import *,按需导入所需模块,之后重新导入DDGS确保优先级:
或者完全重写自己的from fastbook import DataLoaders, Learner # 仅导入需要的组件 from duckduckgo_search import DDGSsearch_images函数,不依赖fastbook提供的版本。 - 修改fastbook源码(不推荐):找到fastbook安装目录下的
__init__.py,删除其中覆盖search_images_ddg的代码,但此方法在包更新后会失效。
3. 替代的图片搜索引擎API
若仍有问题,可选用以下稳定的图片搜索API:
- Unsplash API:提供高质量免费商用图片,需注册获取API Key,搜索接口简洁,适合图像识别项目。
- Pexels API:同样支持免费商用图片,需API Key,调用门槛低。
- Bing Image Search API:微软提供,有免费调用额度,支持精准搜索,适合批量获取图片。
- Google Custom Search API:可配置图片搜索功能,需API Key与搜索引擎ID,有免费调用额度。
内容的提问来源于stack exchange,提问作者user21967185
相关产品推荐
相关产品推荐

