安装AppKit和PyObjC后出现“ImportError: No module named AppKit”错误

7

我正在尝试将一些Python代码运行在在Mac OS X Mojave上使用Python 2.7的Anaconda新安装中。这些都是在同一台机器上之前就可以正常工作的东西。

我收到的错误信息如下:

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

小写字母也无效:

>>> 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

我进行了大量搜索,关于如何解决这个错误的建议大多是“确保你已经安装了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>

brew install 步骤改变了错误信息,但是你可以看到它们没有留下一个可用的设置。


你确定Python和pip的版本是一致的吗?看起来你正在使用Python 2.7,因此你所使用的pip版本也必须是针对Python 2.7的。你可以通过运行命令“pip --version”来检查这一点。 - slightly_toasted
感谢@slightly_toasted的建议。pip看起来是正确的:pip 18.1 from /Users/kuzzooroo/anaconda2/lib/python2.7/site-packages/pip (python 2.7) - kuzzooroo
1个回答

11

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

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

安装PyObjC之外的内容引起了冲突,导致出现无用的错误信息No module named AppKit(实际上有两个东西都叫这个名字)。

运行conda uninstall AppKit然后再运行pip install --upgrade --force-reinstall PyObjC PyObjC-core可以解决问题。


1
在毫无意义的搜索了60分钟后,这个评论为我避免了进一步的烦恼。 - jason
1
太棒了,救了我的一天! - aheigins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接