[英]Python Evdev binding for OpenWrt
美好的一天,
我是一名學生,我想請您抽出一點時間。 我正在研究通過USB端口連接到板名稱Arduino Yun的條形碼讀取器。 該開發板使用名為Atheros AR9331的微處理器運行從OpenWrt派生的嵌入式Linux版本。
我想問你,要使Evdev綁定(python-evdev.readthedocs.org/en/latest/)能夠在這種類型的MIPS微體系結構中運行,有什么必要? 目前,它僅適用於Ubuntu和ArchLinux。 我有點猜測可能需要交叉編譯,或者表明在此linux中使用特定C編譯器的指示。
我已經知道OpenWrt支持的當前python版本是2.7.3,如果在PC中編譯C代碼,則生成的可執行文件將僅在這種類型的體系結構上運行。 如果您在微處理器內部使用該編譯程序,它將無法正常工作。 我在PC的ubuntu中使用該綁定時沒有遇到任何麻煩。 我按照python setup.py install的說明進行了安裝,之前安裝了setuptools,它工作得很好。
但是對於OpenWrt,情況並非如此。
我正在使用的python腳本在代碼的第一行中需要此庫,以便從設備獲取數據(它的工作方式類似於鍵盤/ dev / input / event0):
#!/usr/bin/env python
from evdev import InputDevice, ecodes, list_devices
from select import select
我已經看到了將整個庫復制到arduino中並在同一文件夾中運行腳本的建議。 但這是行不通的,因為evdev模塊具有使用PC而非MIPS的體系結構創建的文件。
那么,針對該錯誤顯示的消息是什么? 如果您在Openwrt中運行python setup.py install
嘗試安裝evdev綁定,它將顯示在屏幕上:
from setuptools.command.develop import develop
File "setup.py", line 10, in <module>
from setuptools.command.develop import develop
ImportError: No module named setuptools.command.develop
從這里顯而易見,您需要上述模塊。 因此,我嘗試使用此腳本(pypi.python.org/pypi/setuptools)安裝它:
python ez_setup.py
輸出顯示如下: Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip
Traceback(最近一次調用為last): File "ez_setup.py", line 332, in <module>
sys.exit(主()) File "ez_setup.py", line 327, in main
downloader_factory = options.downloader_factory, File "ez_setup.py", line 287, in download_setuptools
下載器(URL,saveto) File "ez_setup.py", line 209, in download_file_curl
_clean_check(cmd,target)中File "ez_setup.py", line 209, in download_file_curl
File "ez_setup.py", line 169, in _clean_check
(cmd)中File "ez_setup.py", line 169, in _clean_check
File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
引發CalledProcessError(retcode,cmd) subprocess.CalledProcessError: Command '['curl',
進程。CalledProcessError subprocess.CalledProcessError: Command '['curl',
' https subprocess.CalledProcessError: Command '['curl',
//pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip' ,'--silent','--output','/mnt/sda1/evdev-0.4.6/setuptools-11.3.1.zip']'返回非零退出狀態60
我認為此輸出是由於以下事實:pypi對於OpenWrt中的python 2.7.3不存在,僅適用於較新的版本和其他體系結構。 Evedv綁定需要setuptools模塊才能使事情變得簡單和標准,但是如果目標體系結構不支持該綁定,則無論如何都需要使用它?
謝謝你的時間,
今天是個好日子,
該解決方案由Georgi Valkov提供。 他是python-evdev綁定的創建者。 我直接與他聯系,他非常友善,因此他為OpenWrt / Yun交叉編譯了一個版本。
您可以使用openwrt軟件包管理器-opkg安裝該軟件包。 安裝過程大致如下:
$ opkg update
$ opkg install /path/to/python-evdev_0.4.7-1_ar71xx.ipk
要驗證安裝是否成功:
$ opkg files python-evdev
/usr/lib/python2.7/site-packages/evdev-0.4.7-py2.7.egg-info
/usr/lib/python2.7/site-packages/evdev/genecodes.py
/usr/lib/python2.7/site-packages/evdev/ff.py
/usr/lib/python2.7/site-packages/evdev/_input.so
/usr/lib/python2.7/site-packages/evdev/device.py
/usr/lib/python2.7/site-packages/evdev/events.py
/usr/lib/python2.7/site-packages/evdev/__init__.py
/usr/lib/python2.7/site-packages/evdev/ecodes.py
/usr/lib/python2.7/site-packages/evdev/_ecodes.so
/usr/lib/python2.7/site-packages/evdev/util.py
/usr/lib/python2.7/site-packages/evdev/uinput.py
/usr/lib/python2.7/site-packages/evdev/_uinput.so
這樣很好。 謝謝。
PS。 如果有人需要該文件,請與我聯系。 Georgi給我發送了這個地址,但是我沒有從那里下載文件,因為他是通過電子郵件發送給我的。 https://github.com/gvalkov/openwrt-packages-yun/blob/master/lang/python-evdev/Makefile
在輸出中,你可以看到, curl
返回的狀態碼60.根據man curl
60對等證書不能使用已知的CA證書進行身份驗證。
根據setuptools頁面,您可以改用python ez_setup.py --insecure
但這樣做顯然需要您自擔風險。 或者,您可以執行高級說明中所述的內容,並手動下載setuptools tarball,親自驗證其md5哈希值,然后使用setup.py安裝它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.