导入scipy.ndimage时Pylance报reportMissingImports无法解析错误
报错根因
这个报错有两层原因:
- 核心原因是
scipy.ndimage.imread属于已被彻底删除的废弃API:SciPy从1.0版本开始标记imread为弃用状态,1.2.0及更高版本已经完全移除了scipy.ndimage、scipy.misc下的imread函数,哪怕你正确安装了最新版SciPy,也找不到这个导入路径。 - Pylance提示导入无法解析的次要原因,大概率是VS Code当前选中的Python解释器和你安装依赖的环境不匹配,没有正确加载到已安装的第三方库路径。
修复步骤
- 先修正Pylance的环境识别问题
按Ctrl+Shift+P调出VS Code命令面板,搜索执行Python: Select Interpreter,在列表里选中你实际安装了folium、numpy等依赖的Python环境(虚拟环境/conda环境/系统Python均可),确保Pylance能正常识别已安装的包。 - 替换已废弃的imread调用
原scipy的imread删除后,官方推荐使用imageio库的同名读取函数,返回值格式和原接口完全兼容,不需要修改后续图层叠加的业务逻辑。
先安装依赖:
pip install imageio
把原代码里的导入行from scipy.ndimage import imread替换为:
from imageio import imread
- 修正原代码里的笔误
原代码调用的add_children方法是拼写错误,folium添加图层的方法为单数形式的add_child,不修正的话导入问题解决后依然会触发属性不存在的报错。
修复后可直接运行的完整代码
import folium from folium import plugins from imageio import imread # 影像叠加的地理边界 min_lon = -123.5617 max_lon = -121.0617 min_lat = 37.382166 max_lat = 39.048834 # 初始化底图 map_ = folium.Map(location=[38.2, -122], tiles='Stamen Terrain', zoom_start = 8) # 读取PNG光污染影像为numpy数组 data = imread('./ii_overlay.png') # 叠加影像图层 map_.add_child(plugins.ImageOverlay(data, opacity=0.8, bounds =[[min_lat, min_lon], [max_lat, max_lon]])) map_
如果你不想额外装imageio,也可以用Pillow实现同等效果:安装Pillow后,把读取影像的代码替换为下面两行即可,不需要改动其他逻辑:
from PIL import Image import numpy as np data = np.array(Image.open('./ii_overlay.png'))
内容的提问来源于stack exchange,提问作者kaptnpy
相关产品推荐
相关产品推荐

