发布后无法在 Python 3.10 上安装 Matplotlib (2021-10-05)

Posted

技术标签:

【中文标题】发布后无法在 Python 3.10 上安装 Matplotlib (2021-10-05)【英文标题】:Can't install Matplotlib on Python 3.10 after its release (2021-10-05) 【发布时间】:2021-11-26 16:23:43 【问题描述】:

Python 3.10 发布后,我重新安装了最新版本的模块,但遇到了一些麻烦。首先,我尝试 pip Numpy,因为它是 matplotlib 所需的。但是我遇到了这个问题:

ERROR: Failed building wheel for numpy
Failed to build numpy
ERROR: Could not build wheels for numpy which use PEP 517 and cannot be installed directly

即使不成功,我还是尝试安装 Matplotlib。

    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\User\AppData\Local\Programs\Python\Python310\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\User\\AppData\\Local\\Temp\\pip-install-6mmzj8ln\\matplotlib_e4d8611ecbaa485193e456f5c8639d79\\setup.py'"'"'; __file__='"'"'C:\\Users\\User\\AppData\\Local\\Temp\\pip-install-6mmzj8ln\\matplotlib_e4d8611ecbaa485193e456f5c8639d79\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\User\AppData\Local\Temp\pip-pip-egg-info-x6onvveu'
         cwd: C:\Users\User\AppData\Local\Temp\pip-install-6mmzj8ln\matplotlib_e4d8611ecbaa485193e456f5c8639d79\
    Complete output (257 lines):
    WARNING: The wheel package is not available.
      ERROR: Command errored out with exit status 1:
       command: 'C:\Users\User\AppData\Local\Programs\Python\Python310\python.exe' 'C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\User\AppData\Local\Temp\tmpywamgc6e'
           cwd: C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49
      Complete output (208 lines):
      setup.py:63: RuntimeWarning: NumPy 1.21.2 may not yet support Python 3.10.
        warnings.warn(
      Running from numpy source directory.
      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\tools\cythonize.py:69: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
        from distutils.version import LooseVersion
      Processing numpy/random\_bounded_integers.pxd.in
      Processing numpy/random\bit_generator.pyx
      Processing numpy/random\mtrand.pyx
      Processing numpy/random\_bounded_integers.pyx.in
      Processing numpy/random\_common.pyx
      Processing numpy/random\_generator.pyx
      Processing numpy/random\_mt19937.pyx
      Processing numpy/random\_pcg64.pyx
      Processing numpy/random\_philox.pyx
      Processing numpy/random\_sfc64.pyx
      Cythonizing sources
      blas_opt_info:
      blas_mkl_info:
      No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
      customize MSVCCompiler
        libraries mkl_rt not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      blis_info:
        libraries blis not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      openblas_info:
        libraries openblas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
      get_default_fcompiler: matching types: '['gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95', 'intelvem', 'intelem', 'flang']'
      customize GnuFCompiler
      Could not locate executable g77
      Could not locate executable f77
      customize IntelVisualFCompiler
      Could not locate executable ifort
      Could not locate executable ifl
      customize AbsoftFCompiler
      Could not locate executable f90
      customize CompaqVisualFCompiler
      Could not locate executable DF
      customize IntelItaniumVisualFCompiler
      Could not locate executable efl
      customize Gnu95FCompiler
      Could not locate executable gfortran
      Could not locate executable f95
      customize G95FCompiler
      Could not locate executable g95
      customize IntelEM64VisualFCompiler
      customize IntelEM64TFCompiler
      Could not locate executable efort
      Could not locate executable efc
      customize PGroupFlangCompiler
      Could not locate executable flang
      don't know how to compile Fortran code on platform 'nt'
        NOT AVAILABLE

      accelerate_info:
        NOT AVAILABLE

      atlas_3_10_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries tatlas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      atlas_3_10_blas_info:
        libraries satlas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      atlas_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries ptf77blas,ptcblas,atlas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      atlas_blas_info:
        libraries f77blas,cblas,atlas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\numpy\distutils\system_info.py:2026: 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 ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\numpy\distutils\system_info.py:2026: 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

      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\numpy\distutils\system_info.py:2026: 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 ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      openblas_lapack_info:
        libraries openblas not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      openblas_clapack_info:
        libraries openblas,lapack not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      flame_info:
        libraries flame not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      atlas_3_10_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries tatlas,tatlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries lapack_atlas not found in C:\
        libraries tatlas,tatlas not found in C:\
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
        libraries tatlas,tatlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
      <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
        NOT AVAILABLE

      atlas_3_10_info:
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries satlas,satlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries lapack_atlas not found in C:\
        libraries satlas,satlas not found in C:\
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
        libraries satlas,satlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
      <class 'numpy.distutils.system_info.atlas_3_10_info'>
        NOT AVAILABLE

      atlas_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries ptf77blas,ptcblas,atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries lapack_atlas not found in C:\
        libraries ptf77blas,ptcblas,atlas not found in C:\
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
        libraries ptf77blas,ptcblas,atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
      <class 'numpy.distutils.system_info.atlas_threads_info'>
        NOT AVAILABLE

      atlas_info:
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries f77blas,cblas,atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\lib
        libraries lapack_atlas not found in C:\
        libraries f77blas,cblas,atlas not found in C:\
        libraries lapack_atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
        libraries f77blas,cblas,atlas not found in C:\Users\User\AppData\Local\Programs\Python\Python310\libs
      <class 'numpy.distutils.system_info.atlas_info'>
        NOT AVAILABLE

      lapack_info:
        libraries lapack not found in ['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\libs']
        NOT AVAILABLE

      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\numpy\distutils\system_info.py:1858: 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

      C:\Users\User\AppData\Local\Temp\pip-wheel-1rd1a5_s\numpy_0a0aa0c0c565418fa8227e992c062b49\numpy\distutils\system_info.py:1858: 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_')]

      Warning: attempted relative import with no known parent package
      C:\Users\User\AppData\Local\Programs\Python\Python310\lib\distutils\dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
        warnings.warn(msg)
      running bdist_wheel
      running build
      running config_cc
      unifing config_cc, config, build_clib, build_ext, build commands --compiler options
      running config_fc
      unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
      running build_src
      build_src
      building py_modules sources
      creating build
      creating build\src.win-amd64-3.10
      creating build\src.win-amd64-3.10\numpy
      creating build\src.win-amd64-3.10\numpy\distutils
      building library "npymath" sources
      error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
      ----------------------------------------
      ERROR: Failed building wheel for numpy
    ERROR: Failed to build one or more wheels
    Traceback (most recent call last):
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\installer.py", line 75, in fetch_build_egg
        subprocess.check_call(cmd)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 369, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\python.exe', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', 'C:\\Users\\User\\AppData\\Local\\Temp\\tmpsew9x6oz', '--quiet', 'numpy>=1.16']' returned non-zero exit status 1.

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\User\AppData\Local\Temp\pip-install-6mmzj8ln\matplotlib_e4d8611ecbaa485193e456f5c8639d79\setup.py", line 258, in <module>
        setup(  # Finally, pass this all along to distutils to do the heavy lifting.
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\__init__.py", line 152, in setup
        _install_setup_requires(attrs)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\__init__.py", line 147, in _install_setup_requires
        dist.fetch_build_eggs(dist.setup_requires)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\dist.py", line 785, in fetch_build_eggs
        resolved_dists = pkg_resources.working_set.resolve(
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\pkg_resources\__init__.py", line 766, in resolve
        dist = best[req.key] = env.best_match(
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\pkg_resources\__init__.py", line 1051, in best_match
        return self.obtain(req, installer)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\pkg_resources\__init__.py", line 1063, in obtain
        return installer(requirement)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\dist.py", line 844, in fetch_build_egg
        return fetch_build_egg(self, req)
      File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\installer.py", line 77, in fetch_build_egg
        raise DistutilsError(str(e)) from e
    distutils.errors.DistutilsError: Command '['C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python310\\python.exe', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', 'C:\\Users\\User\\AppData\\Local\\Temp\\tmpsew9x6oz', '--quiet', 'numpy>=1.16']' returned non-zero exit status 1.

    Edit setup.cfg to change the build options; suppress output with --quiet.

    BUILDING MATPLOTLIB
      matplotlib: yes [3.4.2]
          python: yes [3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC
                      v.1929 64 bit (AMD64)]]
        platform: yes [win32]
           tests: no  [skipping due to configuration]
          macosx: no  [Mac OS-X only]

    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/60/d3/286925802edaeb0b8834425ad97c9564ff679eb4208a184533969aa5fc29/matplotlib-3.4.2.tar.gz#sha256=d8d994cefdff9aaba45166eb3de4f5211adb4accac85cbf97137e98f26ea0219 (from https://pypi.org/simple/matplotlib/) (requires-python:>=3.7). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

我也尝试过像这样从源安装,得到了同样的错误:

git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
python -m pip install -e .

我是不是做错了什么?

【问题讨论】:

matplotlib 需要 pyqt 这需要 python matplotlib -> pyqt -> python[version='2.7.*|3.6.*|>=3.6|>=3|<3|3.8.*|3.7.*|3.9.*'] 和 matplotlib -&gt; python[version='3.4.*|3.5.*|&gt;=2.7,&lt;2.8.0a0|&gt;=3.5,&lt;3.6.0a0|&gt;=3.6,&lt;3.7.0a0|&gt;=3.7,&lt;3.8.0a0|&gt;=3.8,&lt;3.9.0a0|&gt;=3.9,&lt;3.10.0a0'] Python 3.10 最近发布了。不要期望所有的库都被移植到它。在您需要使用的库支持之前不要切换到 3.10。 【参考方案1】:

正如其他人所说,Python 3.10 目前与 Matplotlib 不兼容。 你需要安装和使用 Python 3.9,直到它被支持。在此之前,您有几个选择:

窗口

您可以使用Python Launcher for Windows (py.exe) 脚本来选择要运行的 Python 版本,如下所示:

py.exe 脚本帮助: py -h

列出所有已安装的版本 py -0

使用指定版本 py -3.9

例如1 使用 python 3.9 创建虚拟环境 py -3.9 venv .venv

例如2 使用 python 3.9 使用 pip 安装 matplotlib py -3.9 -m pip install matplotlib

Linux

在 Linux 上,你可以运行任何你喜欢的 Python 版本:

python3.9

您可以设置一个本地(您的工作目录和所有子目录)虚拟环境,该环境将使用您指定的版本,如下所示:

python3.9 -m venv .venv

这会将本地目录中使用的python版本设置为3.9,并允许您在每次需要时输入python而不是python3.9

Rotaretihere 的另一篇相关且有用的帖子。

请注意,这里我没有详细描述如何激活和使用 Python 虚拟环境,有关使用它们的更多信息,请阅读 python docs。

如果您有兴趣安装 matplotlib 候选版本,请参考 answer。

【讨论】:

【参考方案2】:

python -m pip install -ve

还有一些额外的字符,以便它通过。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于发布后无法在 Python 3.10 上安装 Matplotlib (2021-10-05)的主要内容,如果未能解决你的问题,请参考以下文章

无法安装 scikit-learn,但它无法在窗口 8.1 的 jupyter notebook 中的 python 3.10 中安装 [重复]

VsCode 无法识别模块(我使用的是 python 3.10)

使用 Python 3.10 运行单元需要安装 ipykernel

在 Python 3.10 上启动 Spyder IDE 时出错

在 Windows10 上的 Python 3.10 中安装 scipy 时出错

无法在 M1 Mac 上安装 OpenCV Python