私は PyPy に緑色で、Python コードを解釈するために PyPy1.9 を使用しています。
ご存じのとおり、CPython インタープリターは、C/C++ コードからコンパイルされた .so ファイルにパッケージ化されたモジュールをインポートできます。
しかし、PyPy1.9 インタープリターは、.so ファイルでモジュールを見つけることができないと教えてくれました。私のコードは少し遅く、パフォーマンスを最適化したいのです。助けて!!
私は PyPy に緑色で、Python コードを解釈するために PyPy1.9 を使用しています。
ご存じのとおり、CPython インタープリターは、C/C++ コードからコンパイルされた .so ファイルにパッケージ化されたモジュールをインポートできます。
しかし、PyPy1.9 インタープリターは、.so ファイルでモジュールを見つけることができないと教えてくれました。私のコードは少し遅く、パフォーマンスを最適化したいのです。助けて!!
まず、CPyExtが PyPy に組み込まれたのは… 正確なバージョンは忘れましたが、1.9 よりもかなり前の数年前です。
基本的に、CPython の場合と同様に、モジュールをビルドしてインストールするだけです。
CPython ではなく、必ず PyPy でインストールしてください。システム上の各 Python インストールには個別のsite-packages
ディレクトリがあるという事実に加えて、CPyExt では、CPython ではなく、PyPy ヘッダーとライブラリに対してモジュールをビルドする必要があります。
手動でインストールする場合は、pypy setup.py install
代わりにpython setup.py install
. pip
またはを使用している場合、これらのツールの PyPy バージョンには通常、 andeasy_install
のような名前が付けられます。pip_pypy
easy_install_pypy
したがって、 をインストールpip
した場合は、次のように簡単に実行できます。
pip_pypy install foo
(sudo
もちろん、 を使用することもできます。)
をインストールpip
していない場合は、CPython の場合と同じ方法で PyPy にインストールします。例えば:
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
pypy get-pip.py
バイナリ インストーラを使用している場合は、明らかに PyPy-1.9 のバイナリ インストーラを入手する必要があります。また、バイナリ インストーラがない場合は使用できません。(32 ビット Windows に CPython 2.7 をインストールする場合と同様にfoo
、2.6 パッケージまたは 64 ビット パッケージしかありません。)
最後の注意: CPyExt でまだ動作しないパッケージがいくつかあります。最も注目すべきは、numpy
それに依存するすべてのもの、および Fortran コードをバインドする必要があるその他のものです。これらのパッケージのいくつかは、CPython をチェック (または非 PyPy をチェックしますか?) し、早期エラーを出します。他の人は構築しようとして失敗するかもしれません。他のものはビルドに成功しても、場合によっては動作しないことがあります (たとえば、GIL に凝ろうとして、2 つ以上のスレッドを持つプログラムで失敗するものもあります)。しかし、最も簡単なのは、実際に試してみることです。
PyPy の場合、外部関数インターフェイスを使用してライブラリ コードにアクセスするCFFIのようなものを利用する必要があります (詳細については、ライブラリのロードに関するセクションを参照してください)。
編集:上記の回答で修正されました。ただし、ライブラリにアクセスするための代替手段を用意し、正当な反対票を受け入れるために、この回答はここに残します。