MicroPython跨文件调用类失败:NodeMCU下MPU6050模块使用求助
NodeMCU + MicroPyton 跨文件调用类问题排查方案
我之前在uPyCraft里折腾MicroPython跨文件调用时也踩过坑,给你几个实用的排查和解决步骤:
1. 先确认文件的存放位置
MicroPython在NodeMCU里的文件系统根目录是/,你必须保证myFile.py和main.py都被上传到根目录下。要是不小心把myFile.py放到了子文件夹,导入时得加上路径,比如from subfolder.myFile import myClass。
你可以通过uPyCraft的「文件管理」面板查看设备上的文件结构,或者用控制台输入import os; print(os.listdir('/'))来确认文件是否在根目录。
2. 检查main.py的导入写法是否正确
你的myFile.py代码是没问题的,但main.py里的导入和调用要对应:
- 方式一:直接导入类
# main.py from myFile import myClass # 实例化类 my_obj = myClass()
- 方式二:导入整个模块
# main.py import myFile # 通过模块调用类 my_obj = myFile.myClass()
别把两种写法混着来,不然容易出现属性找不到的错误。
3. 排查文件上传是否成功
uPyCraft偶尔会出现上传文件失败但没提示的情况,你可以:
- 断开NodeMCU的连接,重新插拔后再连接
- 右键点击
myFile.py,选择「上传到设备」,盯着控制台确认显示“上传成功” - 用uPyCraft的「文件」->「列出文件」功能,确认设备里确实存在这两个文件
4. 注意文件名的大小写!
MicroPython对文件名大小写是敏感的!比如你写的是from myFile import ...,但上传的文件名叫MyFile.py,就会触发ImportError,这点很容易忽略。
关于MPU6050模块的额外提示
等跨文件调用问题解决后,把你提到的MPU6050模块文件上传到NodeMCU根目录,然后用from mpu6050 import MPU6050导入即可,原理和测试myClass是一样的。
如果还是解决不了,把uPyCraft控制台里的错误信息贴出来,能更快定位问题~
内容的提问来源于stack exchange,提问作者javirs
相关产品推荐
相关产品推荐

