![](/img/trans.png)
[英]Can't install pip packages inside a docker container with Ubuntu
[英]Why doesn't pip inside my Docker container install pre-compiled packages?
在我的主機上安裝 scipy:
❯ pip install scipy Collecting scipy Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB) |████████████████████████████████| 25.8 MB 2.4 MB/s Requirement already satisfied: numpy>=1.14.5 in /home/tomas/.pyenv/versions/3.8.2/envs/3.8.2@appdaemon/lib/python3.8/site-packages (from scipy) (1.19.4) Installing collected packages: scipy Successfully installed scipy-1.5.4
嘗試在我的 Docker 容器中安裝 scipy ( acockburn/appdaemon:latest
):
/conf # pip install scipy Collecting scipy Downloading scipy-1.5.4.tar.gz (25.2 MB) |████████████████████████████████| 25.2 MB 274 kB/s Installing build dependencies ... done Getting requirements to build wheel ... done Preparing wheel metadata ... error ERROR: Command errored out with exit status 1: command: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpdj2d13lc cwd: /tmp/pip-install-o5ltw_ig/scipy Complete output (139 lines): lapack_opt_info: lapack_mkl_info: customize UnixCCompiler libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/'] NOT AVAILABLE openblas_lapack_info: customize UnixCCompiler customize UnixCCompiler libraries openblas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/'] NOT AVAILABLE openblas_clapack_info: customize UnixCCompiler customize UnixCCompiler libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/'] NOT AVAILABLE flame_info: customize UnixCCompiler libraries flame not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/'] NOT AVAILABLE atlas_3_10_threads_info: Setting PTATLAS=ATLAS customize UnixCCompiler libraries lapack_atlas not found in /usr/local/lib customize UnixCCompiler libraries tatlas,tatlas not found in /usr/local/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib customize UnixCCompiler libraries tatlas,tatlas not found in /usr/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib/ customize UnixCCompiler libraries tatlas,tatlas not found in /usr/lib/ NOT AVAILABLE atlas_3_10_info: customize UnixCCompiler libraries lapack_atlas not found in /usr/local/lib customize UnixCCompiler libraries satlas,satlas not found in /usr/local/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib customize UnixCCompiler libraries satlas,satlas not found in /usr/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib/ customize UnixCCompiler libraries satlas,satlas not found in /usr/lib/ NOT AVAILABLE atlas_threads_info: Setting PTATLAS=ATLAS customize UnixCCompiler libraries lapack_atlas not found in /usr/local/lib customize UnixCCompiler libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib customize UnixCCompiler libraries ptf77blas,ptcblas,atlas not found in /usr/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib/ customize UnixCCompiler libraries ptf77blas,ptcblas,atlas not found in /usr/lib/ NOT AVAILABLE atlas_info: customize UnixCCompiler libraries lapack_atlas not found in /usr/local/lib customize UnixCCompiler libraries f77blas,cblas,atlas not found in /usr/local/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib customize UnixCCompiler libraries f77blas,cblas,atlas not found in /usr/lib customize UnixCCompiler libraries lapack_atlas not found in /usr/lib/ customize UnixCCompiler libraries f77blas,cblas,atlas not found in /usr/lib/ NOT AVAILABLE accelerate_info: NOT AVAILABLE lapack_info: customize UnixCCompiler libraries lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/'] NOT AVAILABLE lapack_src_info: NOT AVAILABLE NOT AVAILABLE setup.py:460: UserWarning: Unrecognized setuptools command ('dist_info --egg-base /tmp/pip-modern-metadata-ksceopr3'), proceeding with generating Cython sources and expanding templates warnings.warn("Unrecognized setuptools command ('{}'), proceeding with " Running from SciPy source directory. /tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/numpy/distutils/system_info.py:1712: UserWarning: Lapack (http://www.netlib.org/lapack/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [lapack]) or by setting the LAPACK environment variable. if getattr(self, '_calc_info_{}'.format(lapack))(): /tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/numpy/distutils/system_info.py:1712: UserWarning: Lapack (http://www.netlib.org/lapack/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [lapack_src]) or by setting the LAPACK_SRC environment variable. if getattr(self, '_calc_info_{}'.format(lapack))(): Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 257, in main() File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 240, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 110, in prepare_metadata_for_build_wheel return hook(metadata_directory, config_settings) File "/tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 161, in prepare_metadata_for_build_wheel self.run_setup() File "/tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 253, in run_setup super(_BuildMetaLegacyBackend, File "/tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 145, in run_setup exec(compile(code, __file__, 'exec'), locals()) File "setup.py", line 583, in setup_package() File "setup.py", line 579, in setup_package setup(**metadata) File "/tmp/pip-build-env-4401a2iy/overlay/lib/python3.8/site-packages/numpy/distutils/core.py", line 137, in setup config = configuration() File "setup.py", line 477, in configuration raise NotFoundError(msg) numpy.distutils.system_info.NotFoundError: No lapack/blas resources found. ---------------------------------------- ERROR: Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpdj2d13lc Check the logs for full command output.
numpy 也會發生同樣的事情。
我的 Docker 容器和主機使用完全相同的 CPython 版本 (3.8.2),並且都是 x86_64。 為什么兩個地方都沒有安裝預編譯庫? 這是我能控制的嗎?
事實證明 Docker 與它無關,而是運行在其中的操作系統。 我使用的 Docker 映像基於 Alpine,它使用 musl libc 而不是 glibc。 所有 Python 預編譯庫都是為 glibc 編譯的,至少現在是這樣,所以 Alpine 用戶運氣不好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.