2010-11-28 14 views
6

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

この理由は、内部のpython 3.1インタプリタを持つプログラム "blender"の拡張を書いているからです。しかし、私はまた、3.xに移植されていないいくつかのpythonモジュールを利用したいと思います。

私は特に私の心の中でnumpyを持っています。私はnumpyを利用するモジュールを持っています。私はそのモジュールを再配布したいので、poepleが自分のマシンにnumpyをインストールしないようにします。それは働くだろうか?

+0

Cythonは、アプリケーションをスタンドアロンにするためではなく、CPython拡張モジュールを書くためのものです。そのためには[cx_Freeze](http://cx-freeze.sourceforge.net/)を使用してください。また、これはPython 3と特に関係していますか? – delnan

+0

私はcx_Freezeを使うことはできません。モジュールを再配布したいだけで、埋め込まれたpythonのバージョンと一緒に使っています。実行可能ファイルではありません。 – user290494

+0

ohh私は忘れてしまった:内部のPythonインタプリタを持つアプリケーションは、python 3.1(そのblender(www.blenderorg))を使用しています。いくつかのライブラリはPython 2.xxでしか利用できませんので、コンパイルすることでPython 3で利用できるようにするのはクールです... – user290494

答えて

4

原則として、可能です。 Cythonは、PythonのようなコードをCコードに翻訳することによって動作します。このコードは、Python 2またはPython 3のいずれかでコンパイルできます(Cプリプロセッサ文を使用して、使用するコードを変更します)。

Cythonが翻訳できるPythonライクなコードで書かれた拡張機能に対してのみ機能するというのは悪いことです。 Numpyのように、Cで書かれた拡張機能でCythonを使うことはできません。

いいニュースは、少なくともナンピーのために、あなたはするべきではないということです。 version 1.5以降、NumpyはPython 3をサポートしています。Windows用のバイナリがあります。他のシステムでは、自分でコードをコンパイルする方法を検討しなければならないかもしれません。

-2

Pythonのマニュアル、「Python/C APIリファレンスマニュアル」の節で詳しく説明しています。

編集済み: ですから、2.xのライブラリを3.xに移植することができます。それは大きな仕事です。 あなたの希望するソリューションが存在する場合。 Python 2.xはこれまでになくなりました。 2to3ツールがあります。しかし、Cで書かれたPythonライブラリはこのようには適用できません。

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

関連する問題