用于OpenWrt的Python Evdev绑定

时间:2015-01-09 20:04:42

标签: python binding mips openwrt evdev

美好的一天,

我是学生,我只想请你一分钟的时间。 我正在使用通过USB端口连接到电路板名称Arduino Yun的条形码阅读器。该板使用名为Atheros AR9331的微处理器运行从OpenWrt派生的嵌入式Linux版本

我想问一下,使Python Evdev绑定(python-evdev.readthedocs.org/en/latest/)能够在这种类型的MIPS微体系结构中运行需要什么?在当下,它只适用于Ubuntu和ArchLinux。 我有点猜测需要交叉编译,或者在这个linux中指示使用特定的C编译器。
OpenWrt支持的当前python版本是2.7.3 我已经知道,如果您在PC中编译C代码,生成的可执行文件将只在这种类型的体系结构中运行。如果您在微处理器内使用该编译程序,它将无法正常工作。 我在我的电脑中使用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绑定,则会显示在屏幕上:

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(最近一次调用最后一次): 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 169, in _clean_check subprocess.check_call(CMD) File "/usr/lib/python2.7/subprocess.py", line 511, in check_call 引发CalledProcessError(retcode,cmd) subprocess.CalledProcessError: Command '['curl',&#39; https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip&#39;,&#39; - 无声&#39;,&#39; - 输出&#39;,&#39; / mnt / sda1 /了evdev-0.4.6 / setuptools-11.3.1.zip&#39;]&#39;返回非零退出状态60

我认为这个输出是因为在OpenWrt中python 2.7.3不存在pypi,只适用于较新版本和其他架构。 Evedv绑定需要setuptools模块才能使事情更简单,更标准,但如果目标架构不支持绑定,那么还需要什么才能使用它?

感谢您的时间,

2 个答案:

答案 0 :(得分:3)

大家好日子,

解决方案由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

答案 1 :(得分:1)

在输出中,您可以看到curl返回了状态代码60.根据man curl

  

60 Peer证书无法使用已知的CA证书进行身份验证                凯茨。

根据setuptools页面,您可以使用python ez_setup.py --insecure,但显然这样做需要您自担风险。或者,您可以执行advanced instructions所说的内容并手动下载setuptools tarball,自行验证其md5哈希值,并使用其setup.py进行安装。