在 Alpine 上需要什么包才能在构建后 运行 numpy
What packages are required on Alpine to run numpy after build
我计划在 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
)对于 pandas 同样的问题需要更多这些构建依赖项。
没有
在 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 共享库将 link 到 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]
...
我计划在 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
)对于 pandas 同样的问题需要更多这些构建依赖项。
没有
在 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 共享库将 link 到 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]
...