文平

文平的博客

他的个人主页  他的博客

stackless编译;setuptools不兼容cython;

文平  2009年11月27日 星期五 14:24 | 2134次浏览 | 0条评论

一、stackless编译:

编译.so文件,需要这些参数:./configure --enable-shared --enable-stacklessfewerregisters

在一个干净的centos5.3上编译stackless,不用yum安装包,其实没我想象中麻烦,下载这些rpm包,安装(rpm -i packagename):

db4-devel-4.3.29-9.fc6.i386.rpm
bzip2-devel-1.0.3-4.el5_2.i386.rpm
libsepol-devel-1.15.2-1.el5.i386.rpm
e2fsprogs-devel-1.39-20.el5.i386.rpm
keyutils-libs-devel-1.2-1.el5.i386.rpm
libselinux-devel-1.33.4-5.1.el5.i386.rpm
krb5-devel-1.6.1-31.el5.i386.rpm
zlib-devel-1.2.3-3.i386.rpm
openssl-devel-0.9.8e-7.el5.i386.rpm
sqlite-devel-3.3.6-2.i386.rpm
libtermcap-devel-2.0.8-46.1.i386.rpm
readline-devel-5.1-1.1.i386.rpm

 

二、 setuptools不兼容cython:

setuptools(0.6c9)中extension.py专门判断是否有Pyrex包,没有就主动将.pyx文件后缀改成.c,如果我是用Cython代替Pyrex做的setup.py,如:

from Cython.Distutils import build_ext

ext_modules=[
Extension("primes", ["primes.pyx"]),
Extension("spam", ["spam.pyx"]),
]

那setup.py build就会出错。我在编译concurrence时碰到的,解决办法:

from Cython.Distutils import build_ext
import sys, Cython
sys.modules['Pyrex'] = Cython

这个问题是在linux下发现的,本想在linux下解决,发现不会debug,在代码中加了些log,也没找到原因。最后还是回windows下debug几次就找出来啦。真想请教熟悉linux的大侠,碰到这些怪异情况(不熟悉代码、不熟悉其执行流程,同时也不想先看distutils代码了解它工作流程),除了debug,还有什么方法能快点找出问题所在?

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号