3

ツイスト 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

これはツイスト ビルドの「バグ」です。それはバグであるかもしれないし、そうではないかもしれません - ツイストは C 拡張機能がオプションであるとは考えていません。Twisted は、PYTHONPATH が配置されている場所を指すだけで機能しますが、これらの C 拡張機能はありません。

于 2011-02-26T10:09:06.257 に答える
3

setup.py (73) の次の行をコメントアウトすることで、拡張機能のビルドをスキップできる場合があります。

       conditionalExtensions = getExtensions(),

これにより、ディレクトリ ツリーに散在する拡張機能を収集して構築しようとすることを回避できます。

于 2011-02-26T17:41:54.870 に答える
2

今のところ、Twisted トランクは 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 に答える