【问题标题】:Sepreating python code in raspberry pi pico在树莓派 pico 中分离 python 代码
【发布时间】:2021-05-20 04:38:11
【问题描述】:

我无法在 raspberry pi pico 上的 micro python 中从其他文件导入类。

例如。 目录结构

目录/
|__main.py
|__进口/
|_example.py

文件名:main.py


from imports.example import ex

a = ex("name")
a.print_name()

文件名:example.py


class ex:
    def __init__(self, name):
        self.name = name

    def print_name(self):
        print(self.name)

错误状态如下

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
ImportError: no module named 'imports.example'

当所有类都存在于同一个文件中时,该代码才有效。我在 debain 上使用 pico-go vscode 扩展。我尝试在示例目录中添加 __ init __.py,但没有成功。

【问题讨论】:

  • 有一个错字。
  • @Marcello Romani 上面提到的代码只是一个例子,只是为了让人们了解问题,并不是实际的代码。我改正了错字,谢谢指出。
  • 我不确定,但我认为只搜索了sys.path 中的目录。也许尝试将"imports" 添加到sys.path?我是 Python + Micropython 的新手,所以这可能是不正确的。 MP 文档有一节介绍与标准 Python 的不兼容性...
  • @vishnujoshi :-) 我并不是要挑剔(我的信息没有传达我的意图),我真正的意思是也许你忽略了那个错字,这就是你得到导入的原因错误。

标签: python import raspberry-pi micropython raspberry-pi-pico


【解决方案1】:

您在imports 目录中缺少一个空的__init__.py 文件,它会“神奇地”(实际上按照惯例)将imports 变成一个包。

https://docs.python.org/3.8/tutorial/modules.html#packages

dir/
   main.py
   imports/
        __init__.py     # <= turns 'imports' into a package
        example.py
$ python main.py
name

【讨论】:

  • 但这无济于事。我已经尝试过了,我正在使用 micro python。
  • 你试过这个确切的例子吗?这是 100% 标准的 Python。你可能应该发布你的代码。
  • 是的,我试过了。我已将 micro python 用于 raspberry pi pico,其中代码是使用 pico-go vscode 扩展上传的。我没有通过 cli 执行代码。
  • 酷。不幸的是,我没有 Pico,所以除非您发布完整的代码和命令输出,否则我不知道可能出了什么问题。祝你好运! :-)
  • 示例代码本身会引发该错误。
猜你喜欢
  • 2022-12-16
  • 2022-11-08
  • 2021-07-29
  • 2022-11-13
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多