未找到符号:调用pyobjc函数Python3.5.1时,_PyObject_REPR



我一直在寻找使用pyobjc来模拟一些相当于windows上ctypes的鼠标事件/按键。运行了pyobjc的干净安装(先下载pyobjc-core,然后下载pyobjc)。以下是我一直在尝试的代码(来源):

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脚本失败。在浏览了比特桶的"问题"页面后,我发现了这个。其中一个用户(Kentzo)修改了pyobjc github以删除_PyObject_REPR的参与。

我的问题是:如何正确安装他的修订版?我已经尝试了标准的"pip3安装"链接"方法,但我似乎无法在现有的pyobjc文件上安装它。我需要通过sudo手动删除所有的pyobjc文件吗?

正如你可能知道的,我有点傻,所以任何指导都将不胜感激!

谢谢!

要安装一个工作版本,您需要下载正确的pyobjc版本(Kentzo's),在终端或命令行中导航到下载的文件夹,然后从终端(Mac)运行"python3 setup.py install"或从命令行(Windows)运行"setup.py-install"。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-新的标准distutils。

我不知道已经有旧的pyobjc版本是否会引起麻烦,但继续卸载以前的pyobjc版本(像往常一样卸载pip3),然后开始上面的步骤。

最新更新