14

只是一个简单的问题,我如何让 pypy 识别我在 Python 中拥有的第三方模块?例如,我收到以下错误。

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 - 但 ctypes 在 CPython 上可能有点慢: http://docs.python .org/library/ctypes.html 上次我检查,Jython 有 ctypes 的开始,但它还远远不够使用,至少不适合我的目的。

还有一个新接口需要在运行时使用 C 编译器。它可能比 ctypes 不那么脆弱(阅读:容易出现段错误)。它在这里描述:http: //morepypy.blogspot.com/2012/06/release-01-of-cffi.html 它来自我相信的 Pypy 项目,但它首先在 CPython 上工作。AFAIK,它还没有在 Pypy 上运行。

于 2012-06-25T18:51:17.730 回答
6

Pypy 有一个单独的安装空间。因此,你想从 pypi 安装的任何模块都应该安装到它的空间中。因此,例如,我在 /usr/local/pypy-1.9-32bit 中安装了 pypy

我建议使用 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(尽管他们正在研究它,请参阅http://pypy.org/numpydonate.html)。但是,对于许多 python 模块,这种方法效果很好。例如,我以这种方式成功安装了 logilab 约束包。

于 2012-08-02T13:08:54.710 回答
4

正如其他答案中指出的那样,pypy为已安装的模块提供了单独的空间。我发现向 pypy 添加模块的最简单方法如下:

  • 下载源代码(例如作为*.tar.gz文件)
  • 解压,cd进入解压目录
  • 运行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 回答
2

其实安装pypy的时候就有pip_pypy了。看这里:

截屏.

然后使用 pip_pypy 安装第三个模块。

于 2017-02-06T06:02:03.920 回答