我正在尝试在 RaspberryPi 上自动执行一些测试,并且使用 python 的 pymouse 来执行一些模拟点击。在我的 Debian 上,它工作得很好,但当涉及到 Raspbian 时,在尝试导入 pymouse 时,它总是失败并显示此错误消息:
pi@pi ~/ $ python test.py
Traceback (most recent call last):
File "test.py", line 2, in <module>
from pymouse import PyMouse
File "/usr/local/lib/python2.7/dist-packages/pymouse/__init__.py", line 95, in <module>
from unix import PyMouse, PyMouseEvent
File "/usr/local/lib/python2.7/dist-packages/pymouse/unix.py", line 53, in <module>
class PyMouseEvent(PyMouseEventMeta):
File "/usr/local/lib/python2.7/dist-packages/pymouse/unix.py", line 54, in PyMouseEvent
ctx = display2.record_create_context(
File "/usr/lib/pymodules/python2.7/Xlib/display.py", line 216, in __getattr__
raise AttributeError(attr)
AttributeError: record_create_context
所以我做了一些研究,发现我的问题可能是由于我的 x11 安装中缺少记录模块引起的。我已经创建了默认的 /etc/X11/xorg.conf 并添加了以下几行:
Section "Module"
Load "record"
EndSection
重新启动后我找不到任何区别。我想,到目前为止,Raspbian 中还没有安装该模块?我该如何安装它?
更新:
我发现其他人,他在 Fedora 上遇到了类似的问题,并记录了他的问题/usr/lib/xorg/modules/extensions/librecord.so
丢失的事实。这似乎不是我的问题,因为该文件存在。我还尝试Xorg -configure
创建一个新的 xorg.conf 并随后重新启动我的 Pi。还是没有运气。 :-(
以下是一些可能有用的更多信息:
pi@pi ~/ $ grep LoadModule /var/log/Xorg.0.log
[169058.900] (II) LoadModule: "fbturbo"
[169058.912] (II) LoadModule: "fbdev"
和:
pi@pi ~/ $ xdpyinfo name of display: :0.0 version number: 11.0 vendor string: AT&T Laboratories Cambridge vendor release number: 3332 [...] number of extensions: 7
BIG-REQUESTS
MIT-SHM
MIT-SUNDRY-NONSTANDARD
SHAPE
SYNC
XC-MISC
XTEST [...]
答案1
您可以通过启动 python 并运行来测试它,而无需 pymouse 的其余部分
from Xlib.display import Display
display = Display()
display.record_create_context
应该打印哪个
<bound method Display.create_context of <Xlib.display.Display instance at ...>>
看起来对应于
$ xdpyinfo | grep -i record
RECORD
(number of extensions:
在完整输出中。)
如果后者没有出现,则您的 X 服务器不支持它,这是非常不寻常的,因为它2012年7月成为核心服务器的一部分- 这也解释了为什么尝试加载模块不起作用;从大约四年前开始就没有可以加载的模块了。
python-xlib
它本身record
在 2007 年的 0.14 版本中得到了支持,所以它过时的可能性更小......
答案2
http://mirrordirector-mb.raspbian.org/raspbian/pool/main/x/xmacro/
这是一个宏记录器。它已编译,但我认为它按照它所说的那样工作。我还没有测试过它,但它似乎比用 python 程序进行黑客攻击要容易得多,而你却无法找出它的问题所在。