You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thonny编程Raspberry Pi Pico时导入SDCard模块报错如何解决

问题根因

导入失败的核心原因非常明确:运行在Raspberry Pi Pico上的MicroPython只会读取Pico板载存储内的文件,不会直接读取你Windows电脑本地项目文件夹里的内容。
你现在看到的sd_card_read目录结构是Windows本地的文件存放结构,并没有同步上传到Pico的文件系统中。Thonny默认只会把你当前打开点击运行的单个脚本临时传到Pico内存中执行,不会自动上传关联的本地依赖模块,所以不管你怎么修改导入语句、怎么追加sys.path路径,Pico的系统里根本不存在SDCard.py这个文件,自然会报找不到模块的错误。
从你打印的sys.path输出也能验证这点:列表里的/lib指的是Pico自身存储根目录下的lib文件夹,和你Windows本地项目里的lib文件夹没有任何关系。

操作步骤
  • 打开Thonny顶部「视图」菜单,勾选「文件」选项,调出文件浏览面板,面板会分上下两栏:上栏是你本地电脑的文件目录,下栏是Pico板载存储的文件系统。
  • 在下栏的Pico存储根目录(和Pico上电自动执行的main.py同级位置)右键,新建名为lib的文件夹,如果已经存在该文件夹则跳过这步。
  • 在上栏的本地目录中找到你写好的SDCard.py文件,右键选择上传,把文件放到Pico存储的lib文件夹内。不需要上传__init__.py,MicroPython的lib目录下存放单文件模块不需要这个初始化文件,留着反而可能触发路径识别异常。
  • 把你本地的main.py内容同步保存到Pico根目录下的main.py文件里,导入语句直接保留import SDCard即可,不需要额外追加sys.path路径——/lib本身就在MicroPython的默认搜索路径里,解释器会自动到这个目录下找对应模块。
  • 重新运行程序即可正常导入。
避坑说明
  • 不要把main.py放在Pico存储的子文件夹里,Pico上电自动执行的main.py必须存放在板载存储的根目录,放在子目录下不会被自动识别运行。
  • MicroPython对文件名大小写敏感,上传后的SDCard.py文件名必须和你导入语句里写的名字完全一致,sdcard.py、SdCard.py这类大小写不匹配的写法都会触发导入报错。
  • 不要使用from lib import SDCard这类写法,因为/lib已经在默认搜索路径中,加了lib前缀后解释器会去找/lib/lib/SDCard.py这个不存在的路径,反而会报错。
  • 如果你之前尝试过上传文件,先点进Pico存储里的lib文件夹确认文件确实存在,避免出现上传失败、文件存错位置的问题。

内容的提问来源于stack exchange,提问作者Binar Web

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:51:30