我计划在阿尔卑斯Linux容器上构建NumPy。要做到这一点,我将首先安装以下软件包。
apk add --no-cache --virtual build-dependencies musl-dev linux-headers g++
我的问题是,NumPy是依靠这些包(即musl-dev linux-headers g++)来运行,还是仅用于构建,我可以在构建后删除它们吗?(即apk del build-dependencies )同样的问题也适用于需要更多这些构建依赖项的熊猫。
发布于 2021-12-29 00:05:43
不是的。
在高寒地区从源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-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]
...https://stackoverflow.com/questions/70512787
复制相似问题