1

基本的な Cython チュートリアルを機能させようとしています。ので、私は持っています

hello.pyx:

def say_hello_to(name):
    print("Hello %s!" % name)

そしてsetup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension("hello", ["hello.pyx"])]

setup(
  name = 'Hello world app',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)

ただし、コンパイルしようとすると、次のエラーが発生します。

$ python setup.py build_ext --inplace
running build_ext
failed to import Cython: dlopen(/usr/local/lib/python2.7/site-packages/Cython/Compiler/Scanning.so, 2): Symbol not found: _PyCFunction_Check
  Referenced from: /usr/local/lib/python2.7/site-packages/Cython/Compiler/Scanning.so
  Expected in: flat namespace
 in /usr/local/lib/python2.7/site-packages/Cython/Compiler/Scanning.so
error: Cython does not appear to be installed

Cythonインストールされておりscanning.so、問題のシンボルが含まれているように見えます。

$ nm -gl /usr/local/lib/python2.7/site-packages/Cython/Compiler/Scanning.so | grep _PyCFunction_Check
             U _PyCFunction_Check

何か案は?OS X 10.7.5 で自作の python 2.7.3 を使用しています。

編集:以下の@bdash'コメントで指摘されているように、U _PyCFunction_Check実際に _PyCFunction_Checkは未定義であることを意味します。

4

1 に答える 1

3

解決策は非常に簡単でした.brew pythonとpipでインストールされたCythonをアンインストールし、両方を再インストールした後、すべてが機能しているようです。

問題は、Xcodeのみがインストールされたbrewでpythonをインストールしたことだと思います。それまでの間、Cython をインストールする前に、Apple のコマンド ライン ツールをインストールしました。そのため、python と Cython が異なる条件下でインストールされたため、おそらくエラーが発生しました。

于 2013-02-01T17:57:27.920 に答える