ImportError: невозможно импортировать имя '_gi' с помощью python3-gi в RPi Zero - PullRequest
0 голосов
/ 26 октября 2019

Прямо к этому:

23.10.19 20:20:23 (+0100)  main    File "server.py", line 1, in <module>
23.10.19 20:20:23 (+0100)  main      from gadget import Gadget
23.10.19 20:20:23 (+0100)  main    File "/usr/src/app/src/gadget.py", line 3, in <module>
23.10.19 20:20:23 (+0100)  main      from agt import AlexaGadget
23.10.19 20:20:23 (+0100)  main    File "/agt/src/agt/__init__.py", line 29, in <module>
23.10.19 20:20:23 (+0100)  main      from agt.alexa_gadget import AlexaGadget
23.10.19 20:20:23 (+0100)  main    File "/agt/src/agt/alexa_gadget.py", line 24, in <module>
23.10.19 20:20:23 (+0100)  main      from agt.bluetooth import BluetoothAdapter
23.10.19 20:20:23 (+0100)  main    File "/agt/src/agt/bluetooth.py", line 21, in <module>
23.10.19 20:20:23 (+0100)  main      from gi.repository import GObject
23.10.19 20:20:23 (+0100)  main    File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
23.10.19 20:20:23 (+0100)  main      from . import _gi
23.10.19 20:20:23 (+0100)  main  ImportError: cannot import name '_gi'

Я играл с Alexa Gadgets Toolkit, который использует python3-gi ( зависимостей, которые он устанавливает, можно найти здесь ) и поразилsnag.

Для контекста я использую Raspbian Balena с изображением Python Docker на Pi Zero W. Кажется, что при запуске он просто не работает, потому что не может загрузить модуль _gi.

Я пробовал разные версии Python (3.4, 3.5, 3.6, 3.7) безрезультатно, а также пытался установить различные зависимости вручную, используя pip через python -m pip, чтобы убедиться, что был использован правильный pip и т. Д. Не повезло. Python 2.7 также не работает вообще из-за проблемы с кодировкой в ​​библиотеке AGT, однако похоже, что он все равно будет использоваться с 3.x.

1 Ответ

0 голосов
/ 01 ноября 2019

Решение!

Оказывается, модулю .so для GI просто нужно было переименовать «34m» в «36m», поэтому я добавил их в свой Dockerfile, и теперь он работает нормально

RUN sudo mv /usr/lib/python3/dist-packages/gi/_gi.cpython-34m-arm-linux-gnueabihf.so /usr/lib/python3/dist-packages/gi/_gi.cpython-36m-arm-linux-gnueabihf.so

RUN sudo mv /usr/lib/python3/dist-packages/gi/_gi_cairo.cpython-34m-arm-linux-gnueabihf.so /usr/lib/python3/dist-packages/gi/_gi_cairo.cpython-36m-arm-linux-gnueabihf.so
...