Не удалось установить scipy с помощью pip в Windows [Подготовка метаданных (pyproject.toml) не выполнена успешно]

Мне удалось установить несколько популярных пакетов Python с помощью pip в Windows (точнее, с помощью команды py -m pip install <packagename>).

Такие пакеты, как numpy, pandas, matplotlib, pyqt5 и т. д., не вызвали проблем при установке, но некоторые пакеты, такие как scipy и scikit-learn, выдают ошибки.

Collecting scipy
  Using cached scipy-1.10.1.tar.gz (42.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1

╰─> [14 lines of output]
      + meson setup --prefix=C:\Users\XYZ\AppData\Local\Programs\Python\Python38-32 C:\Users\XYZ\AppData\Local\Temp\pip-

install-kcwepnco\scipy_545e8a24382142de9b0a2e3bbeb71b01 C:\Users\XYZ\AppData\Local\Temp\pip-install-kcwepnco

\scipy_545e8a24382142d
e9b0a2e3bbeb71b01\.mesonpy-k7npgzdq\build --native-file=C:\Users\XYZ\AppData\Local\Temp\pip-install-kcwepnco

\scipy_545e8a24382142de9b0a2e3bbeb71b01\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2
      The Meson build system
      Version: 1.4.1
      Source dir: C:\Users\XYZ\AppData\Local\Temp\pip-install-kcwepnco\scipy_545e8a24382142de9b0a2e3bbeb71b01
      Build dir: C:\Users\XYZ\AppData\Local\Temp\pip-install-kcwepnco\scipy_545e8a24382142de9b0a2e3bbeb71b01\.mesonpy-
k7npgzdq\build
      Build type: native build
      Project name: SciPy
      Project version: 1.10.1
      C compiler for the host machine: cl (msvc 12.00.8168 "Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 

12.00.8168 for 80x86")
      C linker for the host machine: link link 6.00.8168

      ..\..\meson.build:1:0: ERROR: None of values ['c++14'] are supported by the C++ compiler. Possible values are 

['none', 'none', 'c++11', 'vc++11']

A full log can be found at...
[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.

Я понятия не имею, что происходит.

Моя ОС — Windows 8, а версия Python — 3.8.

Я обновил pip, а также попробовал:

py -m pip install --upgrade pip setuptools wheel

Но после этого все равно не повезло.

Я относительно новичок в Python, поэтому буду очень признателен за подробное или простое решение с использованием pip.

🤔 А знаете ли вы, что...
С Python можно создавать кросс-платформенные приложения для Windows, macOS и Linux.


133
3

Ответы:

Поскольку вы используете более старую версию Python и Windows, у вас может возникнуть множество проблем, рассмотрите возможность обновления. Указанная выше проблема также вызвана устаревшими средами.


Для стабильной версии scipy требуется: Python >=3.9, а также для стабильной версии scikit-learn требуется: Python >=3.9.

Вы можете обновить свой Python, чтобы исправить эту ошибку. Также обратите внимание, что расширенная поддержка Python 3.8 закончится в октябре 2024 года.


Решено

Прямая проблема, которую вы видите, заключается в том, что у scipy есть C-бэкенд, который pip пытается скомпилировать, но обнаруживает, что ваш компилятор не поддерживает необходимые для этого параметры:

 ERROR: None of values ['c++14'] are supported by the C++ compiler

Обычно для такого типа библиотек (особенно для Windows) их компиляция самостоятельно может оказаться довольно сложной, поэтому часто доступны предварительно скомпилированные версии. Если вы посмотрите https://pypi.org/project/scipy/1.10.1/#files, вы увидите

  1. «Исходный дистрибутив», представляющий собой файл .tar.gz.
  2. «Бинарные дистрибутивы» — файлы .whl, каждый из которых имеет тег версии ОС/python, например scipy-1.10.1-cp39-cp39-win_amd64.whl означает scipy, версия 1.10.1, CPython 3.9, windows x64.

У вас есть 32-битный вариант Python, но если вы проверите связанный список доступных файлов для scipy 1.10.1, то обнаружите, что файлов .whl для окон, отличных от x64, нет. Это создаст проблемы не только с scipy, но и с другими пакетами, поскольку поддержка 32-битных версий Python больше не является стандартной.

Поэтому я рекомендую удалить текущую версию Python и вместо этого установить 64-битную версию. Если возможно, рассмотрите возможность использования более последней версии Python.