Разделение кода Python в Raspberry Pi Pico

Я не могу импортировать класс из другого файла в micro python на raspberry pi pico.

Например. структура каталогов

каталог /
| __main.py
| __imports /
| _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'

Код работает, когда все классы присутствуют в одном файле. Я использую расширение pico-go vscode для debain. Я попытался добавить __ init __.py в каталог примеров, но безуспешно.


person vishnu joshi    schedule 17.02.2021    source источник
comment
Опечатка.   -  person Marcello Romani    schedule 17.02.2021
comment
@Marcello Romani Вышеупомянутый код - это просто пример, чтобы люди могли понять проблему, а не реальный код. Я исправил опечатку, спасибо, что указали на нее.   -  person vishnu joshi    schedule 17.02.2021
comment
Я не уверен, но думаю, что поиск выполняется только в каталогах в sys.path. Может попробовать добавить "imports" в sys.path? Я новичок в Python + Micropython, поэтому, возможно, это неверно. В документе MP есть раздел о несовместимости со стандартным Python ...   -  person aMike    schedule 17.02.2021
comment
@vishnujoshi :-) Я не хотел быть разборчивым (мое сообщение не передало моих намерений), на самом деле я имел в виду, что, возможно, вы пропустили эту опечатку и поэтому получили ошибку импорта.   -  person Marcello Romani    schedule 17.02.2021


Ответы (1)


Вам не хватает пустого файла __init__.py в каталоге imports, который волшебным образом (фактически по соглашению) превратил бы 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
person Marcello Romani    schedule 17.02.2021
comment
Но это было бесполезно. Я уже пробовал и использую микро-питон. - person vishnu joshi; 18.02.2021
comment
Вы пробовали именно этот пример? Это 100% стандартный Python. Тогда вам, вероятно, следует опубликовать свой код. - person Marcello Romani; 18.02.2021
comment
Да, пробовал. Я использовал micro python для raspberry pi pico, где код загружается с использованием расширения pico-go vscode. Я не выполняю код через cli. - person vishnu joshi; 18.02.2021
comment
Прохладный. К сожалению, у меня нет Pico, поэтому, если вы не опубликуете полный код и вывод команды, я не понимаю, что может быть не так. Удачи! :-) - person Marcello Romani; 19.02.2021
comment
Сам пример кода вызывает эту ошибку. - person vishnu joshi; 20.02.2021