14

簡単な質問ですが、Pythonで持っている3番目のparyモジュールをpypyに認識させるにはどうすればよいですか?たとえば、次のエラーが発生します。

from tables import *
ImportError: No Module named tables

これは基本的に、実行しようとしているスクリプトで対話するために使用するpytablesライブラリが見つからないことを意味します。

4

5 に答える 5

8

純粋なPythonモジュールの場合は、次のようなものを使用して、モジュールを含むディレクトリをsys.pathに追加するだけです。

sys.path.insert(0, '/usr/local/lib')
sys.path.insert(0, os.path.expanduser('~/lib'))

これは、CPython、Pypy、およびJythonで機能します。

C拡張モジュールの場合、Pypyのcpyextを試すことができますが、一部のCPython C拡張モジュールがCPythonのCベースのランタイムの暗い隅に迷い込んでいるため、期待するすべてが実行されるわけではありません:http: //morepypy.blogspot.com/ 2010/04 / using-cpython-extension-modules-with.html

私は時々、ctypesを使用してC .soとインターフェイスするコードを記述し、CPythonとPypyの両方でそれを使用します。どちらもctypesで非常にうまく機能するためですが、CPythonではctypesが少し遅くなる可能性があります: http://docs.python .org / library / ctypes.html 最後に確認したところ、Jythonにはctypesの始まりがありましたが、少なくとも私の目的では、使用するには十分ではありませんでした。

実行時にCコンパイラを必要とする新しいインターフェイスもあります。ctypesよりも脆弱ではない可能性があります(読み取り:segfaultsの傾向があります)。ここで説明します:http: //morepypy.blogspot.com/2012/06/release-01-of-cffi.html これは私が信じているPypyプロジェクトから来ていますが、最初にCPythonで動作するように作られました。AFAIK、それはまだPypyで実行されていません。

于 2012-06-25T18:51:17.730 に答える
6

Pypy には個別のインストール スペースがあります。したがって、pypi からインストールするモジュールは、そのスペースにインストールする必要があります。たとえば、pypy を /usr/local/pypy-1.9-32bit にインストールしました。

pip または easy_install を使用することをお勧めします。pip のインストール方法は次のとおりです。

curl curl https://bootstrap.pypa.io/get-pip.py | /usr/local/pypy-1.9-32bit/bin/pypy

また

curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | /usr/local/pypy-1.9-32bit/bin/pypy

次に、新しくインストールした pip を使用してモジュールを取得します。

sudo /usr/local/pypy-1.9-32bit/bin/pip install tables

この場合、次のエラーで失敗しました。

bminton@bminton:/tmp$ sudo /usr/local/pypy-1.9-32bit/bin/pip install tables
Downloading/unpacking tables
  Downloading tables-2.4.0.tar.gz (8.9Mb): 8.9Mb downloaded
  Running setup.py egg_info for package tables
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables!
    Complete output from command python setup.py egg_info:
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables!

この場合、インストールは失敗しました。これは、Tables が PyPy でまだサポートされていない Numpy に依存しているためです (Numpy は対応中ですが、http://pypy.org/numpydonate.htmlを参照してください)。ただし、多くの Python モジュールでは、この方法がうまく機能します。たとえば、この方法で logilab 制約パッケージを正常にインストールできました。

于 2012-08-02T13:08:54.710 に答える
4

他の回答で指摘されているようにpypy、インストールされたモジュール用に別のスペースがあります。モジュールをpypyに追加する最も簡単な方法は次のとおりです。

  • ソースをダウンロードします (例:*.tar.gzファイルとして)
  • 抽出、cd抽出されたディレクトリに
  • run pypy setup.py install(場合によっては、前に を追加する必要がありますsudo)
于 2014-11-28T15:49:04.370 に答える
3

モジュールのフォルダーを C:\Python27\Lib から C:\pypy-2.3.1-win32\lib-python またはインストールした場所と同等の場所にコピーします。

明らかに、これは Windows でのみ機能します。

于 2014-06-27T00:26:19.110 に答える