3

我无法将 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

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

4

3 回答 3

4

这是扭曲构建中的“错误”。它可能是也可能不是一个错误——twisted 并不认为它是 C 扩展是可选的,尽管它们在大多数情况下都不是必需的。如果您只是将 PYTHONPATH 指向它所在的位置,但没有那些 C 扩展,Twisted 仍然可以工作。

于 2011-02-26T10:09:06.257 回答
3

您可以通过在 setup.py (73) 中注释掉以下行来跳过构建扩展:

       conditionalExtensions = getExtensions(),

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

于 2011-02-26T17:41:54.870 回答
2

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

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

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

于 2011-10-09T10:44:15.143 回答