Python 为什么';在我的Docker容器中安装预编译包?
在我的主机上安装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 同样的事情也发生在numpy身上Python 为什么';在我的Docker容器中安装预编译包?,python,docker,numpy,scipy,pip,Python,Docker,Numpy,Scipy,Pip,在我的主机上安装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/versi
我的Docker容器和主机使用完全相同的CPython版本(3.8.2),都是x86_64。为什么两个地方都没有安装预编译库?这是我可以控制的吗?事实证明Docker与此无关,而是它内部运行的操作系统。我使用的Docker图像基于Alpine,它使用musl libc而不是glibc。所有Python预编译库都是为glibc编译的,至少目前是这样,所以Alpine用户运气不好
您缺少这些库,请尝试在容器中安装它们?@hd1是的,但关键是pip没有安装预编译的库。我不想对Docker映像进行修改,因为这会使我的安装复杂化。@Hubro如果您使用的是alpine或类似的发行版,那么在实际运行pip之前,您必须安装许多操作系统级依赖项,因为Scipy和Numpy依赖于它们。例如,在alpine中,在安装Python依赖项之前,我必须运行
运行apk更新\&apk添加--no cache bash libxml2 dev libxslt dev gcc python3 dev linux headers musl dev openssl dev libffi dev build base
@dmitryro Dang。。。这扼杀了我不修改原始图像的整个计划。。。哦,好吧:(
/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.