6

任意のモジュールを cython にインポートし、それらを共有オブジェクト ファイルにコンパイルしてから、Python 3.1 で使用することは可能ですか?

この理由は、内部の python 3.1 インタープリターを持つプログラム「blender」の拡張機能を作成しているためです。しかし、まだ 3.x に移植されていない python-modules も利用したいと思います。

私は特に numpy を頭に入れています(ただし、他のライブラリもいくつかあります)。numpy を利用するモジュールがあります。私はそのモジュールを再配布したいので、人々が自分のマシンに numpy をインストールすることを望んでいません。それはうまくいくでしょうか?

4

2 に答える 2

4

原則として、可能だと思います。Cython は、Python のようなコードを C コードに変換することで機能します。このコードは、Python 2 または Python 3 用にコンパイルできます (C プリプロセッサ ステートメントを使用して、使用するコードを変更します)。

悪いニュースは、Cython が翻訳できる Python のようなコードで書かれた拡張に対してのみ機能することです。Numpy など、C で記述された拡張機能では Cython を使用できません。

良いニュースは、少なくとも Numpy の場合、その必要はないということです。バージョン 1.5以降、Numpy は Python 3 をサポートしています。Windows で利用できるバイナリがあります。他のシステムでは、コードを自分でコンパイルする方法を考える必要があるかもしれません。

于 2010-11-28T18:32:28.123 に答える
-2

Python のドキュメントを確認してください。「Python/C API リファレンス マニュアル」セクションで、その方法が詳しく説明されています。

EDITED: あなたが望むのは、2.xライブラリを3.xに移植することです。それは大きな仕事です。あなたが望む解決策が存在する場合。Python 2.x は今では排除されているはずです。確かに 2to3 ツールがあります。しかし、C で書かれた Python lib は、この方法では適用できません。

そのため、「Python/C API リファレンス マニュアル」の指示に従って lib を 3.x に移植するか、そのまま待つことができます。

于 2010-11-28T14:37:39.057 に答える