【问题标题】:What packages are required on Alpine to run numpy after build构建后在 Alpine 上运行 numpy 需要哪些软件包
【发布时间】:2021-12-28 21:35:07
【问题描述】:

我计划在 Alpine Linux 容器上构建 NumPy。为此,我将首先安装以下软件包。

apk add --no-cache --virtual build-dependencies musl-dev linux-headers g++

我的问题是,NumPy 是依赖这些包(即musl-dev linux-headers g++)运行还是只是为了构建,我可以在构建后删除它们吗? (即apk del build-dependencies)对于需要更多这些构建依赖项的熊猫来说同样的问题。

【问题讨论】:

  • 如果静态构建库,构建成功后不再需要构建需求。动态库不是这种情况。
  • 我如何知道一个库是否是动态的
  • Linux 上的静态库以.a 结尾,而动态库以.so 结尾。
  • 感谢您的帮助,您知道如何在 Linux Alpine 中获取此信息
  • NumPy available from PyPI 有 manylinux 轮子。请参阅stackoverflow.com/q/32923952/1426065 了解有关解压缩轮子并查看其中包含哪些文件的信息。您可能需要解压缩轮子,然后解压缩其中的.egg 文件(如果其中包含一个)。

标签: python linux numpy containers alpine


【解决方案1】:

没有。

在 alpine 中从源代码 numpy-1.21.5.zip 构建 numpy:

apk add python3 python3-dev cython py3-setuptools gcc gfortran g++
unzip numpy-1.21.5.zip
cd numpy-1.21.5
python3 setup.py build
python3 setup.py install

在此之后,唯一的运行时要求当然是 python 和 libc.musl-x86_64.so.1,它是 musl 的一部分。它是python3已经需要的基础包。

~ # find /usr/lib/python3.9/site-packages/numpy-1.21.5-py3.9-linux-x86_64.egg/numpy/ -name "*.so" -print -exec sh -c 'readelf -d {} | grep NEEDED' \;
/usr/lib/python3.9/site-packages/numpy-1.21.5-py3.9-linux-x86_64.egg/numpy/core/_multiarray_tests.cpython-39-x86_64-linux-musl.so
 0x0000000000000001 (NEEDED)             Shared library: [libc.musl-x86_64.so.1]
/usr/lib/python3.9/site-packages/numpy-1.21.5-py3.9-linux-x86_64.egg/numpy/core/_multiarray_umath.cpython-39-x86_64-linux-musl.so
 0x0000000000000001 (NEEDED)             Shared library: [libc.musl-x86_64.so.1]
...

编辑: 为了使 numpy 更快,您需要 openblas(以及构建时的 openblas-dev)。

apk add openblas-dev

在运行时,numpy 共享库将链接到libopenblas.so.3(openblas 的一部分)

~ # readelf -d /usr/lib/python3.9/site-packages/numpy-1.21.5-py3.9-linux-x86_64.egg/numpy/core/_multiarray_umath.cpython-39-x86_64-linux-musl.so

Dynamic section at offset 0x40bb40 contains 20 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libopenblas.so.3]
 0x0000000000000001 (NEEDED)             Shared library: [libc.musl-x86_64.so.1]
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多