Micropython не находит никаких атрибутов модуля

#python #micropython

#python #micropython

Вопрос:

Я пишу набор функций для моего esp8266 (под управлением micropython) для отправки данных на сервер через urequests , но не могу импортировать функции в мой main.py . Я успешно создал модули для других задач и импортировал их, но когда у меня есть это в netclient.py

 import urequests

def postData(data_dict, url="http://192.168.1.1:9000/weather_station"):

    try:
        response = urequests.post(url,
            headers = {'Connection': 'Close', 'content-type': 'application/json'},
            json = data_dict)
    except OSError as e:
        print("Error sending packet: {} n retrying...".format(e))
        try:
            response = urequests.post(url,
                headers={'Connection': 'Close', 'content-type': 'application/json'},
                json = data_dict)
        except OSError as e:
            print("Error sending packet: {} n retry failed".format(e))
            response = False
    return response
  

Затем, когда я попробую это из webrepl

 import netclient
netclient.postData()
  

Я получаю

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'postData'
  

Когда я проверяю netclient , его единственными атрибутами являются __class__ и __name__

Где я ошибаюсь?

Файловая система выглядит следующим образом

 import os 
os.listdir()
['boot.py', 'credentials.json', 'netclient.py', 'lib', 'main.py', 'sensors.py', 'webrepl_cfg.py', 'wifi.py']
  

Комментарии:

1. выполняется netclient импорт web_repl ? Можете ли вы предоставить полную структуру каталогов? Корень случайно не назван netclient ?

2. Я добавил import webrepl в netclient, но это ничего не изменило. То, что я перечислил, — это корневая файловая система, это простой микроконтроллер

3. Назван ли корневой каталог netclient ? Если это так, то вы должны попробовать что-то вроде from netclient import netclient , а затем использовать netclient.postData()

4. @pgcudahy пожалуйста, действительно попытайтесь ответить на мои вопросы. Я не предлагал вам импортировать netclient в web_repl , я спрашивал вас , потому что циклический импорт может вызвать это. Кроме того, пожалуйста, предоставьте полную структуру с фактическим именем каталога. Не заставляйте нас гадать. Не имеет значения, является ли это мелким. Нам нужен способ фактически воспроизвести это, и того, что вы предоставили, недостаточно.

5. Извините, если я выражаюсь непонятно, но это корневой каталог, в нем нет имени каталога или дополнительной структуры. docs.micropython.org/en/v1.9.1/esp8266/esp8266/tutorial /… . Также, чтобы было ясно, я включил весь код netclient.py в моем вопросе. Он ничего не импортирует, кроме urequests