scikit-learn 在 Docker 镜像创建过程中未安装

问题描述 投票:0回答:1

我使用 Windows 8.0 64 位和 Docker 工具箱来创建和运行 docker 映像。所有其他库都很容易安装,但 scikit-learn 无法安装。我不知道我做错了什么。 我对 docker 非常陌生。

以下是我用来构建 Docker 映像的代码。

# Use an official Python runtime as the base image
FROM python:3.9-alpine

# Copy your application code into the container
COPY . /app

# Set the working directory
WORKDIR /app

# Install dependencies
RUN pip install numpy 
RUN pip install pandas 
RUN pip install scikit-learn

# Define the command to run your application
CMD [ "python", "classModel.py" ]

Numpy 和 pandas 下载并安装成功,但 scikit-learn 不成功。我收到以下错误。

            36.8/36.8 MB 866.2 kB/s eta 0:00:00
      Collecting numpy==1.19.3
        Downloading numpy-1.19.3.zip (7.3 MB)
            7.3/7.3 MB 2.9 MB/s eta 0:00:00
        Installing build dependencies: started
        Installing build dependencies: finished with status 'done'
        Getting requirements to build wheel: started
        Getting requirements to build wheel: finished with status 'done'
        Preparing metadata (pyproject.toml): started
        Preparing metadata (pyproject.toml): still running...
        Preparing metadata (pyproject.toml): finished with status 'error'
        error: subprocess-exited-with-error

         Preparing metadata (pyproject.toml) did not run successfully.
         exit code: 1
        > [228 lines of output]
            Running from numpy source directory.
            setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating C
ython sources and expanding templates
              run_build = parse_setuppy_commands()
            Processing numpy/random/_bounded_integers.pxd.in
            Processing numpy/random/mtrand.pyx
            Processing numpy/random/_mt19937.pyx
            Processing numpy/random/_bounded_integers.pyx.in
            Processing numpy/random/_pcg64.pyx
            Processing numpy/random/_generator.pyx
            Processing numpy/random/bit_generator.pyx
            Processing numpy/random/_sfc64.pyx
            Processing numpy/random/_philox.pyx
            Processing numpy/random/_common.pyx
            Cythonizing sources
            blas_opt_info:
            blas_mkl_info:
            customize UnixCCompiler
              libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            blis_info:
              libraries blis not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            openblas_info:
              libraries openblas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            atlas_3_10_blas_threads_info:
            Setting PTATLAS=ATLAS
              libraries tatlas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            atlas_3_10_blas_info:
              libraries satlas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            atlas_blas_threads_info:
            Setting PTATLAS=ATLAS
              libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            atlas_blas_info:
              libraries f77blas,cblas,atlas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            accelerate_info:
              NOT AVAILABLE

            /tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils/system_
info.py:1914: UserWarning:
                Optimized (vendor) Blas libraries are not found.
                Falls back to netlib Blas library which has worse performance.
                A better performance should be easily gained by switching
                Blas library.
              if self._calc_info(blas):
            blas_info:
              libraries blas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            /tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils/system_
info.py:1914: UserWarning:
                Blas (http://www.netlib.org/blas/) libraries not found.
                Directories to search for the libraries can be specified in the
                numpy/distutils/site.cfg file (section [blas]) or by setting
                the BLAS environment variable.
              if self._calc_info(blas):
            blas_src_info:
              NOT AVAILABLE

            /tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils/system_
info.py:1914: UserWarning:
                Blas (http://www.netlib.org/blas/) sources not found.
                Directories to search for the sources can be specified in the
                numpy/distutils/site.cfg file (section [blas_src]) or by setting
                the BLAS_SRC environment variable.
              if self._calc_info(blas):
              NOT AVAILABLE

            non-existing path in 'numpy/distutils': 'site.cfg'
            lapack_opt_info:
            lapack_mkl_info:
              libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            openblas_lapack_info:
              libraries openblas not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            openblas_clapack_info:
              libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            flame_info:
              libraries flame not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            atlas_3_10_threads_info:
            Setting PTATLAS=ATLAS
              libraries lapack_atlas not found in /usr/local/lib
              libraries tatlas,tatlas not found in /usr/local/lib
              libraries lapack_atlas not found in /usr/lib
              libraries tatlas,tatlas not found in /usr/lib
            <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
              NOT AVAILABLE

            atlas_3_10_info:
              libraries lapack_atlas not found in /usr/local/lib
              libraries satlas,satlas not found in /usr/local/lib
              libraries lapack_atlas not found in /usr/lib
              libraries satlas,satlas not found in /usr/lib
            <class 'numpy.distutils.system_info.atlas_3_10_info'>
              NOT AVAILABLE

            atlas_threads_info:
            Setting PTATLAS=ATLAS
              libraries lapack_atlas not found in /usr/local/lib
              libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
              libraries lapack_atlas not found in /usr/lib
              libraries ptf77blas,ptcblas,atlas not found in /usr/lib
            <class 'numpy.distutils.system_info.atlas_threads_info'>
              NOT AVAILABLE

            atlas_info:
              libraries lapack_atlas not found in /usr/local/lib
              libraries f77blas,cblas,atlas not found in /usr/local/lib
              libraries lapack_atlas not found in /usr/lib
              libraries f77blas,cblas,atlas not found in /usr/lib
            <class 'numpy.distutils.system_info.atlas_info'>
              NOT AVAILABLE

            lapack_info:
              libraries lapack not found in ['/usr/local/lib', '/usr/lib']
              NOT AVAILABLE

            /tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils/system_
info.py:1748: 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.
              return getattr(self, '_calc_info_{}'.format(name))()
            lapack_src_info:
              NOT AVAILABLE

            /tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils/system_
info.py:1748: 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.
              return getattr(self, '_calc_info_{}'.format(name))()
              NOT AVAILABLE

            numpy_linalg_lapack_lite:
              FOUND:
                language = c
                define_macros = [('HAVE_BLAS_ILP64', None), ('BLAS_SYMBOL_SUFFIX', '64_')]

            /usr/local/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option
: 'define_macros'
              warnings.warn(msg)
            running dist_info
            running build_src
            build_src
            building py_modules sources
            creating build
            creating build/src.linux-x86_64-3.9
            creating build/src.linux-x86_64-3.9/numpy
            creating build/src.linux-x86_64-3.9/numpy/distutils
            building library "npymath" sources
            Could not locate executable gfortran
            Could not locate executable f95
            Could not locate executable ifort
            Could not locate executable ifc
            Could not locate executable lf95
            Could not locate executable pgfortran
            Could not locate executable nvfortran
            Could not locate executable f90
            Could not locate executable f77
            Could not locate executable fort
            Could not locate executable efort
            Could not locate executable efc
            Could not locate executable g77
            Could not locate executable g95
            Could not locate executable pathf95
            Could not locate executable nagfor
            don't know how to compile Fortran code on platform 'posix'
            Traceback (most recent call last):
              File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_
in_process.py", line 353, in <module>
                main()
              File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_
in_process.py", line 335, in main
                json_out['return_val'] = hook(**hook_input['kwargs'])
              File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_
in_process.py", line 149, in prepare_metadata_for_build_wheel
                return hook(metadata_directory, config_settings)
              File "/tmp/pip-build-env-5m8dy8mn/overlay/lib/python3.9/site-packages/setuptools/build
_meta.py", line 157, in prepare_metadata_for_build_wheel
                self.run_setup()
              File "/tmp/pip-build-env-5m8dy8mn/overlay/lib/python3.9/site-packages/setuptools/build
_meta.py", line 248, in run_setup
                super(_BuildMetaLegacyBackend,
              File "/tmp/pip-build-env-5m8dy8mn/overlay/lib/python3.9/site-packages/setuptools/build
_meta.py", line 142, in run_setup
                exec(compile(code, __file__, 'exec'), locals())
              File "setup.py", line 508, in <module>
                setup_package()
              File "setup.py", line 500, in setup_package
                setup(**metadata)
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/core.py", line 169, in setup
                return old_setup(**new_attr)
              File "/tmp/pip-build-env-5m8dy8mn/overlay/lib/python3.9/site-packages/setuptools/__ini
t__.py", line 165, in setup
                return distutils.core.setup(**attrs)
              File "/usr/local/lib/python3.9/distutils/core.py", line 148, in setup
                dist.run_commands()
              File "/usr/local/lib/python3.9/distutils/dist.py", line 966, in run_commands
                self.run_command(cmd)
              File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
                cmd_obj.run()
              File "/tmp/pip-build-env-5m8dy8mn/overlay/lib/python3.9/site-packages/setuptools/comma
nd/dist_info.py", line 31, in run
                egg_info.run()
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/command/egg_info.py", line 24, in run
                self.run_command("build_src")
              File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
                self.distribution.run_command(command)
              File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
                cmd_obj.run()
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/command/build_src.py", line 144, in run
                self.build_sources()
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/command/build_src.py", line 155, in build_sources
                self.build_library_sources(*libname_info)
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/command/build_src.py", line 288, in build_library_sources
                sources = self.generate_sources(sources, (lib_name, build_info))
              File "/tmp/pip-install-e7n3td1r/numpy_ee8c2d6e1c364e55bedf17dbda5c5674/numpy/distutils
/command/build_src.py", line 378, in generate_sources
                source = func(extension, build_dir)
              File "numpy/core/setup.py", line 663, in get_mathlib_info
                raise RuntimeError("Broken toolchain: cannot link a simple C program")
            RuntimeError: Broken toolchain: cannot link a simple C program
            [end of output]

        note: This error originates from a subprocess, and is likely not a problem with pip.
      error: metadata-generation-failed

       Encountered error while generating package metadata.
      > See above for output.

      note: This is an issue with the package mentioned above, not pip.
      hint: See above for details.

      [notice] A new release of pip is available: 23.0.1 -> 23.2.1
      [notice] To update, run: pip install --upgrade pip
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

 pip subprocess to install build dependencies did not run successfully.
 exit code: 1
> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

[notice] A new release of pip is available: 23.0.1 -> 23.2.1
[notice] To update, run: pip install --upgrade pip
The command '/bin/sh -c pip install scikit-learn' returned a non-zero code: 1
python docker scikit-learn pip dockerfile
1个回答
0
投票

我也面临同样的问题,我使用

python:latest
作为基础映像,解决了我安装 scikit-learn 的问题。

© www.soinside.com 2019 - 2024. All rights reserved.