将自定义模块导入我的 MicroPython Pico-W 项目时出现的问题

Issues when importing a custom module into my MicroPython Pico-W Project

提问人:Seth 提问时间:11/8/2023 最后编辑:Seth 更新时间:11/21/2023 访问量:38

问:

当涉及到这样的事情的文件结构时,我非常缺乏经验和新手。我目前正在使用 MicroPython 和 Pico-W。我正在尝试从另一个python文件导入模块,但一直收到此错误:

Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: no module named 'foo'

目前我的文件结构如下所示:

my-proj:
 - main.py
 - foo.py

我的代码是这样的:

main.py
________

from foo import bar

bar()
foo.py
________

def bar():
print('foobar')

我试过将东西移入和移出文件夹,将它们分开,将它们安装到Pico-W等。似乎无法弄清楚,我确信这很简单,我只是对此视而不见。

感谢您的帮助。

微蟒 蛇树莓派皮科

评论

0赞 Alex 11/8/2023
你在python解释器吗?你在哪里跑步?python main.py
1赞 D.L 11/8/2023
这将不起作用,因为缺少缩进。def bar():
0赞 D.L 11/8/2023
Python 需要缩进。大概这是一个错别字......
0赞 David Grayson 11/9/2023
你如何将文件上传到Raspberry Pi Pico,你是如何运行它们的?您能否发布屏幕截图,以便我们验证这两个文件是否在主板的文件系统中,并且都处于顶层?它们不应该位于名为 的文件夹中,否则您必须执行额外的操作才能使导入正常工作。my-proj

答:

0赞 Jiu_Zou 11/8/2023 #1

您需要先转到 my-proj。

cd my-proj
python foo.py

或添加到环境变量中。

foo.py
---------
import sys
import os
abspath = os.path.abspath(__file__)
filename = abspath.split(os.sep)[-1]
abspath = abspath.replace(filename, "")
sys.path.append(abspath)
0赞 brainelectronics 11/21/2023 #2

在 MicroPython 设备上,和文件位于“根”中。main.pyboot.py

其他文件放在目录中。lib

pyboard/
├── lib
│   ├── foo.py
├── boot.py
├── main.py

您可以使用以下命令检查 MicroPython 默认 sys 路径

import sys
print(sys.path)

有了它,您可以将其用作main.py

from foo import bar

bar()

和以下内容作为lib/foo.py

def bar():
    print('foobar')