在pypy中使用第三方模块

2024-10-05 14:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

最初的问题解决了,但还有更多。。。在

我在网上找到了这个。因为训练需要相当长的时间,所以我想加快速度。在寻找方法时,我遇到了皮比。在

Pypy现在已经设置好了,似乎可以正常工作,但不能使用sequiturg2p代码。当导入来自.so文件的模块时,我得到一个No module named _sequitur_。在

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

我在UbuntuLinux14.04和Python2.7.10上运行PypyV2.6.1。在

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

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

编辑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

从控制台调用此特定命令时,不作为设置.py,有两个错误:

^{pr2}$

&

/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中的相同。在

因为我不知道c++是如何工作的,所以我迷路了。。。在

编辑2:

好吧,不知怎么的,第一个include(指向pypy的numpy)不起作用。也许这不是一个干净的方法,但它有助于解决这个问题。所以我在设置.py把那个指向cPython的numpy include dir。 完成了,那个设置.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

有什么建议吗?在

谢谢


Tags: 文件inpyimportnumpysoinclude错误