Quarto文档中Shinylive环境导入OpenCV失败的问题求助
在Quarto Shinylive环境中安装并使用OpenCV(cv2)
核心解决思路
Pyodide的包安装操作(loadPackage/micropip.install)都是异步的,await关键字只能在异步函数内部使用,不能直接写在全局代码里。把安装逻辑包进异步函数,再用asyncio.run()触发执行就能解决问题。
可运行代码示例
import asyncio from pyodide import loadPackage import micropip async def setup_opencv(): # 二选一:用pyodide的loadPackage安装 await loadPackage("opencv-python") # 或者用micropip安装 # await micropip.install("opencv-python") # 安装完成后导入cv2,声明为全局变量方便后续调用 global cv2 import cv2 # 执行异步安装流程 asyncio.run(setup_opencv()) # 现在可以正常使用cv2处理图片了 # 示例:加载本地图片(替换为你的图片路径) # img = cv2.imread("test_image.jpg") # 如果是网络图片,可先通过pyodide.http.fetch获取
注意事项
- 安装完成后要在异步函数内部导入cv2,或者声明为全局变量,否则后续代码无法访问该模块。
- 两种安装方式效果一致,任选其一即可,Pyodide对
opencv-python的支持完善,能满足图片加载等基础需求。
内容的提问来源于stack exchange,提问作者Aarón Tovar Sáez
相关产品推荐
相关产品推荐

