直接使用它:
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'
我一直在玩弄使用python3-gi(dependencies it installs can be found here)并遇到障碍的Alexa小工具工具包。
对于上下文,我在Pi Zero W上使用Balena的Raspbian和Python Docker镜像。由于无法加载_gi模块,启动时似乎完全失败。
我已经尝试了各种Python版本(3.4、3.5、3.6、3.7),但都无济于事,还尝试了手动安装各种依赖项,通过python -m pip
使用pip以确保使用了正确的pip,等等。由于AGT库中的编码问题,Python 2.7根本不起作用,但是看起来无论如何它仍有望与3.x一起使用。
解决方案!
事实证明,用于GI的.so模块只需要将“ 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