一直想开始使用pyobjc来模拟一些鼠标事件/击键,相当于Windows上的ctypes。然后彻底安装pyobjc(首先下载pyobjc-core,然后下载pyobjc)。以下是我一直在尝试的代码(source):
from Quartz.CoreGraphics import CGEventCreateMouseEvent
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGEventMouseMoved
from Quartz.CoreGraphics import kCGEventLeftMouseDown
from Quartz.CoreGraphics import kCGEventLeftMouseDown
from Quartz.CoreGraphics import kCGEventLeftMouseUp
from Quartz.CoreGraphics import kCGMouseButtonLeft
from Quartz.CoreGraphics import kCGHIDEventTap
def mouseEvent(type, posx, posy):
theEvent = CGEventCreateMouseEvent(
None,
type,
(posx,posy),
kCGMouseButtonLeft)
CGEventPost(kCGHIDEventTap, theEvent)
def mousemove(posx,posy):
mouseEvent(kCGEventMouseMoved, 845, 396);
def mouseclick(posx,posy):
mouseEvent(kCGEventMouseMoved, 845, 396);
mouseEvent(kCGEventLeftMouseDown, 845, 396);
mouseEvent(kCGEventLeftMouseUp, 845, 396);
最近出现以下错误:
File "/usr/local/lib/python3.5/site-packages/objc/__init__.py", line 15, in _update
import objc._objc as _objc
ImportError: dlopen(/usr/local/lib/python3.5/site-packages/objc/_objc.cpython-35m-darwin.so, 2): Symbol not found: _PyObject_REPR
Referenced from: /usr/local/lib/python3.5/site-packages/objc/_objc.cpython-35m-darwin.so
Expected in: flat namespace
in /usr/local/lib/python3.5/site-packages/objc/_objc.cpython-35m-darwin.so
显然问题是Python3.5中没有_PyObject_REPR,因此init脚本失败。进入bitbucket'问题'页面后,我找到了this。其中一个用户(Kentzo)修改了pyobjc github以删除_PyObject_REPR的参与。
我的问题:如何正确安装修改后的版本?我尝试了标准的'pip3 install“链接”'方法,但我似乎无法将其安装在现有的pyobjc文件上。我是否需要通过sudo手动删除所有pyobjc文件?
你可能会说我有点像菜鸟,所以任何指导都会非常感激!
谢谢!
答案 0 :(得分:0)
要安装正常工作版本,您需要下载正确的pyobjc版本(Kentzo's),导航到终端或命令行中的下载文件夹,然后从终端(Mac)运行“python3 setup.py install”或“从命令行(Windows)安装“setup.py”。 setup.py文件将为您处理所有事情。
在此处下载Kentzo的版本,然后打开它:https://github.com/GreatFruitOmsk/pyobjc-core/releases/download/v3.0.5.dev0/pyobjc-core-3.0.5.tar.gz。
打开下载的文件夹后,请按照Distutils部分下此页面中的说明进行操作:https://docs.python.org/2/install/#the-new-standard-distutils。
我不知道是否已经有旧的pyobjc版本会造成麻烦,但请继续卸载以前的pyobjc版本(像往常一样使用pip3卸载),然后开始上述步骤。