我計劃在 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)對于需要更多這些構建依賴項的熊貓來說同樣的問題。
uj5u.com熱心網友回復:
不。
在 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]
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397951.html
