ImportError:无法在RPi零上使用python3-gi导入名称'_gi'

时间:2019-10-25 22:38:47

标签: python python-3.x raspberry-pi alexa

直接:

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一起使用。

1 个答案:

答案 0 :(得分:1)

解决方案!

事实证明,用于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
相关问题