Cython 和 PyCharm - 终端 Python 中未发生的错误

Cython and PyCharm - error that does not occur in Python from Terminal

我在导入已编译的 cython 函数时遇到一个非常奇怪的错误。我说很奇怪,因为如果我从终端使用 python 而不是 Pycharm 控制台,一切都会正常。这是错误:

Traceback (most recent call last):
 File "<input>", line 1, in <module>
 File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydev_import_hook.py", line 21, in do_import
 module = self._system_import(name, *args, **kwargs)
 File "/Users/(me)/Analysis/analysis.py", line 8, in <module>
 from cfunctions import Cpotts_energy
 File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydev_import_hook.py", line 21, in do_import
 module = self._system_import(name, *args, **kwargs)
ImportError: dlopen(/Users/(me)/Analysis/cfunctions.so, 2): Symbol not found: _PyCapsule_New
 Referenced from: /Users/(me)/Analysis/cfunctions.so
 Expected in: flat namespace
 in /Users/(me)/Analysis/cfunctions.so

C 函数只是一个简单的数组求和,但正如我所说,使用来自终端的 python 不会发生错误,所以我猜想 PyCharm 本身可能涉及一些模糊的设置,超出了我的新手知识。

Mac OS 10.11.1, Python 2.7.3

有什么线索吗?

由于文件从终端正确编译,在 Pycharm 中转到:

Run > Edit Configurations > Python Interpreter

并确保在终端 运行 和 Pycharm 中使用相同的 Python 版本。还要安装所有必要的 Python headers 和您可能需要的库。

其他 Python 安装(例如 Canopy 或 Anaconda)可能会干扰系统的 Python。如果您拥有这些发行版之一但不使用它,则应将其完全删除以避免出现问题。查看发行版的官方文档以获取卸载说明。