我手動編譯python-openzwave與C++ library一起工作。在非標準位置編譯和使用open-zwave的python-openzwave
我想用它作爲Kodi插件(在Pi 3上運行的OpenELEC),所以不能使用標準安裝。 我已經編譯好了一切,下載了缺失six
和louie
庫,現在試着運行hello_world.py
。
我現在迪爾斯結構如下:
- root
- bin
- .lib
- config
Alarm.o
...
libopenzwave.a
libopenzwave.so
libopenzwave.so.1.4
...
- libopenzwave
driver.pxd
group.pxd
...
- louie
__init__.py
dispatcher.py
...
- openzwave
__init__.py
command.py
...
six.py
hello_world.py
但是當我運行hello_world.py,我碰到下面的錯誤 -
Traceback (most recent call last):
File "hello_world.py", line 40, in <module>
from openzwave.controller import ZWaveController
File "/storage/.kodi/addons/service.multimedia.open-zwave/openzwave/controller.py", line 34, in <module>
from libopenzwave import PyStatDriver, PyControllerState
ImportError: No module named libopenzwave
如果我提出libopenzwave.a
和libopenzwave.so
到根文件夾,那麼我得到以下錯誤:
Traceback (most recent call last):
File "hello_world.py", line 40, in <module>
from openzwave.controller import ZWaveController
File "/storage/.kodi/addons/service.multimedia.open-zwave/openzwave/controller.py", line 34, in <module>
from libopenzwave import PyStatDriver, PyControllerState
ImportError: dynamic module does not define init function (initlibopenzwave)
Wh在我的設置錯誤?
你確定你的模塊的初始化信息,這裏說:https://docs.python.org/3/ extends/extends.html#the-module-s-method-table-and-initialization-function? – noteness
手動編譯如何?如果我沒有弄錯''Cython'文件沒有被'cythonized'編譯並且編譯正確('Cython'爲你創建'init''的功能,你能否找到'initlibopenzwave'編譯過程? –
@Jim,我已經下載了源代碼https://github.com/OpenZWave/python-openzwave/raw/master/archives/python-openzwave-0.3.1.tgz,解壓縮並運行'make build '。這個版本不需要''Cython'根據這個討論 - https://groups.google.com/forum/#!topic/python-openzwave-discuss/Yrgf-Xg5XRk。 –