如何使用pypy 1.4.1安装twis​​ted 10.2.0?

时间:2011-02-26 09:11:51

标签: python twisted pypy

我无法将twisted 10.2.0安装到我的ubuntu盒子中。下载扭曲的源后,我发出命令:pypy setup.py install。之后我收到错误:

building 'twisted.runner.portmap' extension
creating build/temp.linux-x86_64-2.5
creating build/temp.linux-x86_64-2.5/twisted
creating build/temp.linux-x86_64-2.5/twisted/runner
cc -I/builds/pypy-1.4.1-linux64/include -c twisted/runner/portmap.c -o build/temp.linux-x86_64-2.5/twisted/runner/portmap.o
cc -shared build/temp.linux-x86_64-2.5/twisted/runner/portmap.o -o build/lib.linux-x86_64-2.5/twisted/runner/portmap.pypy-14.so
/usr/bin/ld.bfd.real: build/temp.linux-x86_64-2.5/twisted/runner/portmap.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
build/temp.linux-x86_64-2.5/twisted/runner/portmap.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
error: command 'cc' failed with exit status 1

那么,我该如何解决呢?感谢。

3 个答案:

答案 0 :(得分:4)

这是扭曲构建中的“错误”。它可能是也可能不是一个错误 - 扭曲并不认为它的C扩展是可选的,尽管它们在很大程度上远非必要。如果您只是将PYTHONPATH指向它所在的位置,那么Twisted仍然可以工作,但没有那些C扩展。

答案 1 :(得分:2)

您可以通过评论the following line in setup.py (73)来跳过构建扩展程序:

       conditionalExtensions = getExtensions(),

这应该避免收集并尝试构建分散在目录树中的扩展。

答案 2 :(得分:2)

至于现在Twisted trunk可以用PyPy编译好(我使用的是1.6.1-dev0)。 但是,为了安装Twisted,您需要将patch应用于我已提交给stdlib的zipfile.py。

zipfile.py 2.7.1+泄漏文件描述符,因为zipfile.py中使用了面向CPython的编程风格

因此,在使用其他GC模型而不是CPython的PyPy下安装失败。