我直接使用 Cython 文档中的基本“hello world”演示。除非我尝试在同一个 setup.py 文件中导入 py2app,否则它工作正常:
import py2app
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("helloworld", ["helloworld.pyx"])]
)
只要我.c
为我的 Cython 模块预先生成文件,Py2app 本身就可以正常工作。但如果我没有,那么build_ext
失败:
running build_ext
gcc-4.2 not found, using clang instead
building 'helloworld' extension
clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c helloworld.c -o build/temp.macosx-10.6-intel-2.7/helloworld.o
clang: error: no such file or directory: 'helloworld.c'
clang: error: no input files
error: command 'clang' failed with exit status 1
import py2app
如果我在 setup.py 中注释掉,build_ext
可以正常工作,并且我的编译中缺少中间步骤:
...
gcc-4.2 not found, using clang instead
cythoning helloworld/helloworld.pyx to helloworld/helloworld.c
building 'helloworld' extension
...
那么破坏 Cython 的 py2app 是什么?我能做些什么呢?显然,我只想为我的项目提供一个 setup.py。
我有从 PyPI 安装的 Cython 0.18 和 py2app 0.7.2。我将 Mac OS X 10.8 与 python.org Python 2.7.3 一起使用,而不是 Apple 的构建。