在pypy中使用第三方模块

时间:2015-09-18 14:03:16

标签: python pypy

最初的问题已经解决,但还有更多......

__

我在网上找到了这个整洁的LTS tool。由于训练需要相当长的时间,我想加快速度。在寻找方法时,我遇到了PyPy。

Pypy现在已经设置好了,但似乎没有使用Sequitur g2p代码。导入来自.so文件的模块时,我得到No module named _sequitur_

我还尝试使用PyPy而不是Python安装/编译代码,这些代码在没有任何有用(?)错误的情况下崩溃。

我在使用Python 2.7.10的Ubuntu Linux 14.04上运行PyPy v2.6.1。

使用默认解释器调用g2p可以正常工作。

是否需要通过来自PyPy的调用来编译有问题的.so文件?

编辑#1:

当尝试使用PyPy而不是CPython安装g2p时,它会在没有此命令后崩溃:

error: Command "cc -O2 -fPIC -Wimplicit -DMULTIGRAM_SIZE=2 -I/opt/pypy-2.6.1-linux64/site-packages/numpy/core/include -I/opt/pypy-2.6.1-linux64/include -c sequitur_wrap.cpp -o build/temp.linux-x86_64-2.7/sequitur_wrap.o -fpermissive" failed with exit status 1

从控制台调用此特定命令时,如果不是setup.py的一部分,则有两个错误:

/opt/pypy-2.6.1-linux64/site-packages/numpy/core/include/numpy/ndarrayobject.h:192:55: error: ‘PyArray_DescrFromType’ was not declared in this scope
         PyArray_FromAny(op, PyArray_DescrFromType(type), min_depth, \

&安培;

/opt/pypy-2.6.1-linux64/site-packages/numpy/core/include/numpy/ndarrayobject.h:194:69: error: ‘PyArray_FromAny’ was not declared in this scope
                                          NPY_ARRAY_ENSUREARRAY, NULL)

使用CPhyton安装时未显示或导致错误。 diff还表明,在上述路径下的ndarrayobject.h与/usr/local/lib/python2.7/site-packages/numpy/andsoon中的ndarrayobject.h没有区别。

因为我不知道c ++是如何工作的,所以我迷失了......

编辑#2:

嗯,不知怎的,它不适用于第一个包含(指向pypy的numpy)。可能不是干净的方式,但它有助于摆脱这个问题。所以我替换了setup.py中的 include_dirs 条目,并将其指向cPython的numpy包括dir。 完成后,setup.py运行没有任何错误。当我现在尝试import sequitur(一个必要的文件)时,我注意到一个.so丢失,将它从cPython的numpy复制到Pypy的numpy。到目前为止这么好但现在我仍然得到这个错误:

$ pypy
Python 2.7.10 (f3ad1e1e1d62, Aug 28 2015, 10:45:29)
[PyPy 2.6.1 with GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 import sequitur
AttributeError: _ARRAY_API not found
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "sequitur.py", line 32, in <module>
    import sequitur_, SequenceModel, Minimization, misc
  File "sequitur_.py", line 28, in <module>
    _sequitur_ = swig_import_helper()
  File "sequitur_.py", line 20, in swig_import_helper
    import _sequitur_
ImportError: numpy.core.multiarray failed to import

有什么建议吗?

由于

0 个答案:

没有答案