ESP8266 - ошибка после обновления платы до 3.1.1

Я использую Ubuntu 22.04 и Arduino IDE 1.8.19 для своих проектов ESP8266.

Вчера я обновился до 3.1.1 (используя менеджер библиотек плат), и сразу после этого я получил следующее сообщение (через несколько секунд после начала компиляции):

Traceback (most recent call last):
  File "/home/guy/snap/arduino/85/.arduino15/packages/esp8266/hardware/esp8266/3.1.1/tools/mkbuildoptglobals.py", line 846, in <module>
    sys.exit(main())
  File "/home/guy/snap/arduino/85/.arduino15/packages/esp8266/hardware/esp8266/3.1.1/tools/mkbuildoptglobals.py", line 759, in main
    if time.time_ns() < os.stat(commonhfile_fqfn).st_mtime_ns:
AttributeError: module 'time' has no attribute 'time_ns'
exit status 1
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.

Действия, предпринятые для поиска причины:

  1. Пустой скетч — происходит.
  2. Любая другая плата ESP8266 — встречается.
  3. Возврат к предыдущей версии, 3.1.0 - происходит.
  4. Вернуться к версии 3.0.2 — ОК!
  5. Проверка версии 3.1.1 на Mac, та же версия IDE — ОК!

Есть идеи, почему? Я один?

Парень

, 👍1

Обсуждение

Ошибка сообщает вам, что функция python time.time_ns() не существует. Эта функция была добавлена в библиотеку времени Python с версией Python3 3.7. Наиболее вероятным сценарием, который я могу себе представить, является то, что на вашей Ubuntu установлена версия python 3.6 или ниже, и поэтому программное обеспечение платы не находит требуемую функцию. Откройте терминал и введите python --version или python3 --version и убедитесь, что у вас установлен как минимум python V 3.7. Я бы порекомендовал установить 3.10+, чтобы иметь самую новую версию и не пропустить другие библиотеки и языковые функции., @Peter Paul Kiefer

@PeterPaulKiefer Ввод guy@linux:~$ python3 --version возвращен Питон 3.10.6, @Guy . D

У меня такая же проблема Убунту 22.04 IDE 1.8.19 Питон 3.10.6 Ошибка возникает после обновления платы esp8266 до 3.1.1, @Michael Tresp

Прости за мой запоздалый ответ. Вы установили Arduino IDE с оснасткой?! Возможно, у Snap есть свои зависимости от Python. У меня часто возникали такие проблемы при использовании snap вместо установки программного обеспечения с помощью apt или вручную с помощью tarball. Теперь я всегда устанавливаю Arduino с помощью архива. В Интернете есть много документов, вот один из примеров: https://linuxopsys.com/topics/install-arduino-ide-on-ubuntu-20-04., @Peter Paul Kiefer

@PeterPaulKiefer да, из Snap, @Guy . D

У меня была такая же проблема, хотя у меня был установлен python 3.8, и я также установил Arduino через Snap. После удаления установки Snap и установки с сайта arduino (файл .AppImage) проблема с time_ns исчезла. Tnx@PeterPaulKiefer. Вы превращаете свой комментарий в ответ, и я с удовольствием проголосую за него., @userfuser

@PeterPaulKiefer, пожалуйста, опубликуйте это как ответ, @Guy . D


1 ответ


Лучший ответ:

1

Ошибка сообщает вам, что функция python time.time_ns() не существует. Эта функция была добавлена в библиотеку времени Python версии 3.7 Python3.

Наиболее вероятным сценарием, который я могу здесь представить, является то, что на вашей Ubuntu установлен Python 3.6 или более ранней версии, и поэтому программное обеспечение платы не находит требуемую функцию.

В зависимости от того, как настроена IDE ARDUINO, используется глобально установленный Python или специальная установка Python. Мы обсудили эти две возможности в чате и поняли, что в вашем случае snap устанавливает свою собственную зависимость от python. Я предполагаю, что версия этого питона была ниже 3.7 и поэтому плагин не смог найти нужную функцию времени.

Если бы Arduino IDE зависела от глобальной установки Python, было бы достаточно установить более новый Python (например, 3.10+) глобально.

В вашем случае (зависимость определяется привязкой) единственное решение, которое у меня есть, — установить IDE не при помощи привязки, а вручную или с помощью apt. В Интернете есть инструкции, такие как https://www. computerpost.com/how-to-install-arduino-ide-on-ubuntu-22-04-lts/.

Пожалуйста, ознакомьтесь с комментарием @userfuser (об использовании файла .AppImage) в обсуждении под вопросом.

,