Ubuntu Core 上的 Numpy 构建失败(使用 snapcraft)

Numpy build failure on Ubuntu Core (with snapcraft)

最后我在 Ubuntu 16.04 和 17.10 上安装了我的应用程序,但现在我尝试在 Ubuntu 核心(用我的树莓派)和我的 python 部分(这取决于在 numpy 上)在构建时遇到以下问题:

Running setup.py bdist_wheel for numpy ... error
Complete output from command /home/getty23/cavi/cavi-device-snap/parts/cavi-device-sdk/install/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9foo8C/numpy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpewhEJRpip-wheel-:
Running from numpy source directory.
blas_opt_info:
blas_mkl_info:
 libraries mkl,vml,guide not found in ['/home/getty23/cavi/cavi-device-snap/parts/cavi-device-sdk/install/usr/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
 NOT AVAILABLE

... (更多日志here) ...

arm-linux-gnueabihf-gcc: numpy/core/src/multiarray/arrayobject.c
 numpy/core/src/multiarray/arrayobject.c:1838:5: error: ‘array_methods’     undeclared here (not in a function)
   array_methods,                              /* tp_methods */
   ^
numpy/core/src/multiarray/arrayobject.c:1840:5: error: ‘array_getsetlist’ undeclared here (not in a function)
   array_getsetlist,                           /* tp_getset */
   ^
numpy/core/src/multiarray/arrayobject.c:1838:5: error: ‘array_methods’ undeclared here (not in a function)
   array_methods,                              /* tp_methods */
   ^
numpy/core/src/multiarray/arrayobject.c:1840:5: error: ‘array_getsetlist’ undeclared here (not in a function)
   array_getsetlist,                           /* tp_getset */

这是应用程序中使用 numpy 的部分:

parts:
 cavi-device-sdk:
  plugin: python
  python-version: python2
  source: ../cavi-device-sdk
  stage-packages:
  - liblapack-dev
  - libatlas-base-dev
  - gfortran
  - libatlas-dev
  - python-dev
  - libc6
  - python-numpy

我已经尝试包含不同的库 (libblas-dev liblapack-dev libatlas-base-dev gfortran libatlas-dev python-dev),并且我还移回了较旧的 numpy 版本 1.10.1。但没有任何帮助。 如果 numpy/snapcrafft 专家可以帮助我找出问题,那就太好了。

我找到了问题的答案。似乎我使用了错误的 numpy 版本。使用 numpy 1.11.0 和以下阶段包它正在工作:

 - gcc
 - gfortran
 - python-dev
 - libc6
 - libblas3
 - liblapack3
 - libopenblas-dev
 - liblapack-dev
 - cython

除了安装 Miniconda,它会安装旧版本的 numpy,我还使用了以下步骤:

easy_install pip==1.5.6
pip install numpy==1.14.5

确保您有 setuptoolswheel 最新版本。 Sudo 和 chroot 也可能影响该过程。

我在 Ubuntu Core 上记录了我的个人经历:

GitHub Repo - Ubuntu Core in Raspberry