让Pypy识别第三方模块

时间:2012-06-25 18:38:10

标签: python pypy pytables

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

from tables import *
ImportError: No Module named tables

基本上说它找不到我用来与我试图运行的脚本进行交互的pytables库。

5 个答案:

答案 0 :(得分: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 - 但是cypes在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上运行。

答案 1 :(得分: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依赖于Numpy,PyPy尚不支持它(尽管他们正在使用它,请参阅http://pypy.org/numpydonate.html)。但是,对于许多python模块,这种方法效果很好。例如,我以这种方式成功安装了logilab约束包。

答案 2 :(得分:4)

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

  • 下载源代码(例如,作为*.tar.gz文件)
  • 提取,cd到解压缩的目录
  • 运行pypy setup.py install(有时您需要添加sudo

答案 3 :(得分:3)

将模块的文件夹从C:\ Python27 \ Lib复制到C:\ pypy-2.3.1-win32 \ lib-python或相当于安装它们的位置。

显然,这只适用于Windows。

答案 4 :(得分:2)

实际上,安装pypy时会有pip_pypy。见这里:

screenshot

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