`ImportError: No module named AppKit` 安装 AppKit 和 PyObjC 后

kuz*_*roo 6 python macos appkit

我正在尝试使用 Python 2.7 在 Mac OS X Mojave 上的 Anaconda 上重新安装一些 Python 代码。这是以前在同一台机器上工作的所有东西。

我得到的错误是这样的:

Mac:~ kuzzooroo$ python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 13:10:39)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import AppKit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named AppKit
Run Code Online (Sandbox Code Playgroud)

小写也不起作用:

>>> import appkit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/kuzzooroo/anaconda2/lib/python2.7/site-packages/appkit/__init__.py", line 11, in <module>
    from AppKit import _metadata
ImportError: No module named AppKit
Run Code Online (Sandbox Code Playgroud)

我已经做了很多搜索,关于如何处理这个错误的建议大多是“确保你已经安装了X”的形式。这是我所拥有的:

Mac:~ kuzzooroo$ brew install PyGObject PyGObject3
Warning: pygobject 2.28.7_1 is already installed and up-to-date
To reinstall 2.28.7_1, run `brew reinstall pygobject`
Warning: pygobject3 3.30.4 is already installed and up-to-date
To reinstall 3.30.4, run `brew reinstall pygobject3`
Mac:~ kuzzooroo$ pip install AppKit PyObjC PyObjC-core
Requirement already satisfied: AppKit in ./anaconda2/lib/python2.7/site-packages (0.2.8)
Requirement already satisfied: PyObjC in ./anaconda2/lib/python2.7/site-packages (5.1.2)
Requirement already satisfied: PyObjC-core in ./anaconda2/lib/python2.7/site-packages (5.1.2)
Requirement already satisfied: ... <many more lines>
Run Code Online (Sandbox Code Playgroud)

这些brew install步骤从不同的地方改变了错误,但正如你所看到的,它们并没有给我留下一个工作设置。

kuz*_*roo 10

原来有人编写了一个名为 AppKit 的包,它是完全不同的 Mac 操作系统组件。这是另一个 AppKit:

$ pip search appkit
AppKit (0.2.8)  - Desktop application framework based on Webkit HTML5, CSS3, Javascript and Python
Run Code Online (Sandbox Code Playgroud)

除了 PyObjC 之外,安装它会产生冲突,导致无用的错误消息No module named AppKit(实际上不是一个而是两个东西与这个名字一起运行)。

运行conda uninstall AppKit然后pip install --upgrade --force-reinstall PyObjC PyObjC-core修复了问题。