导入 micropython 中存在的模块时出现 ImportError
Posted
技术标签:
【中文标题】导入 micropython 中存在的模块时出现 ImportError【英文标题】:ImportError when importing modules that exist in micropython 【发布时间】:2022-01-04 14:56:11 【问题描述】:我目前正在开展一个项目,该项目涉及使用传感器和安装在扩展板 V3.1 上的 Pycom LoPy4 进行土壤湿度测量。我目前正在使用 VS 代码作为我的 IDE,并使用 pymakr 扩展在我的板上运行 micropython。
在我的项目开始时,导入功能正常工作,我使用的是直接从互联网复制的代码,如下所示,它可以正常运行:
import time
from machine import Pin
from onewire import DS18X20
from onewire import OneWire
# DS18B20 data line connected to pin P10
ow = OneWire(Pin('P10'))
temp = DS18X20(ow)
while True:
print(temp.read_temp_async())
time.sleep(1)
temp.start_conversion()
time.sleep(1)
这将导入单线模块,传感器将进行温度测量。
快进到现在,由于我不知道的原因,每当我运行脚本时,我都会收到 ImportError:没有名为“onewire”的模块。然后我尝试在不同的项目上运行不同的库,这次尝试使用以下代码导入模块:
from lib import measureSensors
from lib import onewire;
运行此代码时,我得到了基本相同的错误 - ImportError: no module named 'lib.measureSensors'
我也尝试过使用__init__.py
方法,但这似乎也不能解决我遇到的问题。我在下面附上了我的项目树的图片。
奇怪的是,如果我在 pycharm 或 VS 代码中运行这些代码而不使用 pymakr 扩展,代码执行时不会出现任何错误。当在 pymakr 和 Lopy4 x 扩展板 V3.1 上运行代码时,问题就开始了。
如果有人能帮助我解决这个问题,我将不胜感激。
谢谢。
【问题讨论】:
这里很难提供答案,因为缺少关键信息;在项目根目录中启动 Python 且不对sys.path
进行任何修改时,from lib import onewire
之类的导入将起作用。 IE。如果我创建一个像你这样的项目树,cd 到根目录,那么这样的导入将起作用,我无法重现你的问题。可能最好退后一步,创建一个最小的示例(例如,您在其中 from lib import example
和 lib/example.py 的 main.py),它会产生问题并更新您的问题。
【参考方案1】:
您可以将目录添加到 python 用来查找模块并照常导入的 sys.path:
sys.path.insert(0, './lib')
import measureSensors
import onewire
您可以显式引用该模块:
import lib.measureSensors as measureSensors
import lib.onewire as onewire
【讨论】:
以上是关于导入 micropython 中存在的模块时出现 ImportError的主要内容,如果未能解决你的问题,请参考以下文章
导入我自己的模块时出现“ImportError: No module named...”