【问题标题】:Symbol not found: _PyObject_REPR when calling pyobjc function, Python3.5.1未找到符号:调用 pyobjc 函数时的 _PyObject_REPR,Python3.5.1
【发布时间】:2016-01-09 17:51:08
【问题描述】:

一直在寻找使用 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 "link"' 方法,但是我似乎无法将它安装在我现有的 pyobjc 文件上。我是否需要通过 sudo 手动删除所有 pyobjc 文件?

您可能会说我有点菜鸟,所以任何指导将不胜感激!

谢谢!

【问题讨论】:

    标签: python python-3.x pyobjc


    【解决方案1】:

    要安装工作版本,您需要下载正确的 pyobjc 版本(Kentzo 的),在终端或命令行中导航到下载的文件夹,然后从终端(Mac)或“ setup.py install" 从命令行 (Windows)。 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卸载),然后开始上面的步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2012-01-09
      • 2019-08-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多