首页 > 解决方案 > 在 Alpine Edge 中安装 py[2]-numpy(Alpine 3.10 是最新的并且具有 py[2]-numpy)

问题描述

由于gdaland proj(aka proj4) 仅在 Alpine Edge (“测试”存储库)中可用,我被锁定到该分支。

使用 Python 3 时, Python 模块gdal(不是上面提到的库)不能在 Alpine Edge 上编译,所以这使我无法使用 Python 2。

我收到很多错误,例如

    extensions/gdal_wrap.cpp: In function 'CPLErr GDALDatasetShadow_SetGCPs2(GDALDatasetShadow*, int, const GDAL_GCP*, OSRSpatialReferenceShadow*)':
    extensions/gdal_wrap.cpp:4735:12: error: 'GDALSetGCPs2' was not declared in this scope; did you mean 'GDALSetGCPs'?
     4735 |     return GDALSetGCPs2( self, nGCPs, pGCPs, (OGRSpatialReferenceH)hSRS );
          |            ^~~~~~~~~~~~
          |            GDALSetGCPs
    extensions/gdal_wrap.cpp: In function 'PyObject* _wrap_EscapeString(PyObject*, PyObject*, PyObject*)':
    extensions/gdal_wrap.cpp:7850:63: warning: 'int PyObject_AsReadBuffer(PyObject*, const void**, Py_ssize_t*)' is deprecated [-Wdeprecated-declarations]
     7850 |       int res = PyObject_AsReadBuffer(obj0, &safeBuf, &safeLen);
          |                                                               ^
    In file included from /usr/include/python3.7m/Python.h:147,
                     from extensions/gdal_wrap.cpp:173:
    /usr/include/python3.7m/abstract.h:489:17: note: declared here
      489 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
          |                 ^~~~~~~~~~~~~~~~~~~~~

我认为这是由于这个 Python 版本不匹配造成的。

我需要使用py-numpy( py2-numpy) +-dev包以及py2-matplotlib,但这些在 Edge 分支存储库中不可用。那个只有那些为 Python 3 预编译的包。

OK:  ---> Running in a83422b2e066
OK: fetch http://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz
OK: fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
OK: fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
OK: ERROR: unsatisfiable constraints:

OK:   py-numpy (missing):
    required by: world[py-numpy]
  py-numpy-dev (missing):
    required by: world[py-numpy-dev]
  py2-matplotlib (missing):
    required by: world[py2-matplotlib]

Python 2 的 3.10 分支中存在 numpy 和 matplotlib 包。

有没有办法可以在 Edge 分支中使用/安装它们?

这是我的 Dockerfile 的相关部分

RUN apk --update --no-cache add --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
      build-base \
      gdal \
      gdal-dev \
      proj \
      proj-dev \
      python2 \
      python2-dev \
      py-numpy \
      py-numpy-dev \
      py2-pillow \
      py2-matplotlib \
      py2-pip && \
    \
    pip install --upgrade pip && \
    pip install --upgrade subprocess32 cycler gdal arrow && \
...

标签: pythonnumpymatplotlibalpine

解决方案


推荐阅读