Сборка из исходного кода#
Примечание
Если вы пытаетесь только установить SciPy, мы рекомендуем использовать бинарные файлы — см. Установка для подробностей об этом.
Сборка SciPy из исходного кода требует настройки системных зависимостей (компиляторы, библиотеки BLAS/LAPACK и т.д.) сначала, а затем запуска сборки. Сборка может выполняться для установки SciPy для локального использования, разработки самого SciPy или создания распространяемых бинарных пакетов. И может потребоваться настроить аспекты того, как выполняется сборка. Это руководство охватит все эти аспекты. Кроме того, оно предоставляет справочную информацию о том, как работает сборка SciPy, и ссылки на актуальные руководства по общей документации по сборке и упаковке Python, которая имеет отношение к делу.
Зависимости на уровне системы#
SciPy использует скомпилированный код для скорости, что означает необходимость компиляторов и некоторых других системных зависимостей (т.е., не-Python / не-PyPI) для сборки на вашей системе.
Примечание
Если вы используете Conda, вы можете пропустить шаги в этом разделе - за исключением
установки компиляторов для Windows или Apple Developer Tools
для macOS. Все остальные зависимости будут установлены автоматически
mamba env create -f environment.yml команда.
Если вы хотите использовать системный Python и pip, вам потребуется:
Компиляторы C, C++ и Fortran (обычно
gcc,g++, иgfortran).Заголовочные файлы Python (обычно пакет с именем
python3-devилиpython3-devel)Библиотеки BLAS и LAPACK. OpenBLAS является стандартным для SciPy; другие варианты включают ATLAS и MKL.
pkg-configдля обнаружения зависимостей.
Для установки требований сборки SciPy можно сделать:
sudo apt install -y gcc g++ gfortran libopenblas-dev liblapack-dev pkg-config python3-pip python3-dev
В качестве альтернативы, вы можете сделать:
sudo apt build-dep scipy
Эта команда устанавливает всё необходимое для сборки SciPy, с тем преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Для установки требований сборки SciPy можно сделать:
sudo dnf install gcc-gfortran python3-devel openblas-devel lapack-devel pkgconfig
В качестве альтернативы, вы можете сделать:
sudo dnf builddep scipy
Эта команда устанавливает всё необходимое для сборки SciPy, с тем преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Для установки требований сборки SciPy можно сделать:
sudo yum install gcc-gfortran python3-devel openblas-devel lapack-devel pkgconfig
В качестве альтернативы, вы можете сделать:
sudo yum-builddep scipy
Эта команда устанавливает всё необходимое для сборки SciPy, с тем преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Для установки требований сборки SciPy можно сделать:
sudo pacman -S gcc-fortran openblas pkgconf
Установите Apple Developer Tools. Простой способ сделать это: откройте окно терминала, введите команду:
xcode-select --install
и следуйте инструкциям. Apple Developer Tools включает Git, компиляторы Clang C/C++, и другие утилиты разработки, которые могут потребоваться.
Выполнить не используйте системный Python macOS. Вместо этого установите Python с установщик python.org или с помощью менеджера пакетов, такого как Homebrew, MacPorts или Fink.
Другие системные зависимости, которые вам нужны, — это компилятор Fortran, библиотеки BLAS и LAPACK, а также pkg-config. Их проще всего установить с помощью Homebrew:
brew install gfortran openblas pkg-config
Чтобы инструменты сборки могли найти OpenBLAS, вы должны запустить:
brew info openblas | grep PKG_CONFIG_PATH
Это даст вам команду, начинающуюся с export PKG_CONFIG_PATH=, что
вы должны запустить.
Примечание
Начиная с SciPy 1.14.0, мы добавили поддержку библиотеки Accelerate для BLAS и LAPACK. Для этого требуется macOS 13.3 или новее. Чтобы собрать с Accelerate вместо OpenBLAS, см. Выбор библиотек BLAS и LAPACK.
Для сборки SciPy необходим совместимый набор компиляторов C, C++ и Fortran. Это сложнее на Windows, чем на других платформах, потому что MSVC не поддерживает Fortran, а gfortran и MSVC нельзя использовать вместе. Вам потребуется один из этих наборов компиляторов:
Компиляторы Mingw-w64 (
gcc,g++,gfortran) - рекомендуется, потому что это проще всего установить и используется для CI и бинарных сборок SciPyMSVC + Intel Fortran (
ifort)Компиляторы Intel (
icc,ifort)
По сравнению с macOS и Linux, сборка SciPy на Windows немного сложнее из-за необходимости настройки этих компиляторов. Невозможно просто вызвать однострочную команду в командной строке, как на других платформах.
Сначала установите Microsoft Visual Studio - версия 2019 Community Edition или любая более новая версия подойдет (см. сайт загрузки Visual Studio). Это необходимо даже при использовании компиляторов MinGW-w64 или Intel, чтобы обеспечить наличие Windows Universal C Runtime (другие компоненты Visual Studio не требуются при использовании Mingw-w64 и могут быть отключены, если нужно сэкономить место на диске).
Существует несколько источников бинарных файлов для MinGW-w64. Мы рекомендуем версии RTools, которые можно установить с помощью Chocolatey (см. инструкции по установке Chocolatey здесь):
choco install rtools -y --no-progress --force --version=4.0.0.20220206
В случае проблем мы рекомендуем использовать ту же версию, что и в Задачи CI SciPy GitHub Actions для Windows.
Установщик MSVC не добавляет компиляторы в системный путь, и место установки может меняться. Чтобы запросить место установки, MSVC поставляется с vswhere.exe утилита командной строки. И чтобы сделать
компиляторы C/C++ доступными внутри используемой оболочки, вам нужно
запустить .bat файл для правильной разрядности и архитектуры (например, для
64-битных процессоров Intel используйте vcvars64.bat).
Для подробного руководства см. Использование набора инструментов Microsoft C++ из командной строки.
Подобно MSVC, компиляторы Intel предназначены для использования со скриптом активации (Intel\oneAPI\setvars.bat), который вы запускаете в используемой оболочке. Это делает компиляторы доступными в пути. Подробные инструкции см. в
Начните работу с Intel® oneAPI HPC Toolkit для Windows.
Примечание
Компиляторы должны быть в системном пути (т.е., PATH переменная окружения должна содержать каталог, в котором могут быть найдены исполняемые файлы компилятора, чтобы быть найденной, за исключением MSVC, который будет найден автоматически, если и только если на PATH. Вы можете использовать любую оболочку (например, Powershell, cmd или
Git Bash) для запуска сборки. Чтобы проверить это, попробуйте
вызвать компилятор Fortran в используемой вами оболочке (например, gfortran
--version или ifort --version).
Предупреждение
При использовании окружения conda возможно, что создание окружения
не сработает из-за устаревшего компилятора Fortran. Если это
произойдет, удалите compilers запись из environment.yml и
попробуйте снова. Компилятор Fortran должен быть установлен, как описано в
этом разделе.
Сборка SciPy из исходного кода#
Если вы хотите установить SciPy из исходников только один раз и не заниматься разработкой,
то рекомендуемый способ сборки и установки — использовать pip.
В противном случае рекомендуется conda.
Примечание
Если у вас ещё нет установки conda, мы рекомендуем использовать Miniforge; хотя подойдет любая версия conda.
Сборка из исходного кода для использования SciPy#
Если вы используете окружение conda, pip остаётся инструментом, который вы используете для запуска сборки SciPy из исходного кода. Важно всегда использовать
--no-build-isolation флаг в pip install команда, чтобы избежать сборки против numpy wheel из PyPI. Чтобы это работало, вы
должны сначала установить оставшиеся зависимости сборки в окружение conda:
# Either install all SciPy dev dependencies into a fresh conda environment
mamba env create -f environment.yml
# Or, install only the required build dependencies
mamba install python numpy cython pythran pybind11 compilers openblas meson-python pkg-config
# To build the latest stable release:
pip install scipy --no-build-isolation --no-binary scipy
# To build a development version, you need a local clone of the SciPy git repository:
git clone https://github.com/scipy/scipy.git
cd scipy
git submodule update --init
pip install . --no-build-isolation
# To build the latest stable release:
pip install scipy --no-binary scipy
# To build a development version, you need a local clone of the SciPy git repository:
git clone https://github.com/scipy/scipy.git
cd scipy
git submodule update --init
pip install .
Сборка из исходников для разработки SciPy#
Если вы хотите собрать из исходников, чтобы работать над самим SciPy, сначала клонируйте репозиторий SciPy:
git clone https://github.com/scipy/scipy.git
cd scipy
git submodule update --init
Затем вам нужно сделать следующее:
Создайте выделенную среду разработки (виртуальное окружение или conda-окружение),
Установите все необходимые зависимости (build, а также тест, doc и необязательный зависимости),
Сборка SciPy с нашим
dev.pyинтерфейс разработчика.
Шаг (3) всегда одинаков, шаги (1) и (2) различаются между conda и виртуальными окружениями:
Чтобы создать scipy-dev среду разработки со всеми необходимыми и
необязательными зависимостями, запустите:
mamba env create -f environment.yml
mamba activate scipy-dev
Примечание
Существует множество инструментов для управления виртуальными окружениями, таких как venv,
virtualenv/virtualenvwrapper, pyenv/pyenv-virtualenv, Poetry, PDM, Hatch и другие. Здесь мы используем базовый venv инструмента, который является частью стандартной библиотеки Python. Вы можете использовать любой другой инструмент; всё, что нам нужно — это активированная среда Python.
Создать и активировать виртуальное окружение в новой директории с именем venv (
обратите внимание, что точная команда активации может отличаться в зависимости от вашей ОС и оболочки
— см. “Как работают виртуальные окружения”
в venv документация).
python -m venv venv
source venv/bin/activate
python -m venv venv
source venv/bin/activate
python -m venv venv
venv\Scripts\Activate.ps1
Затем установите зависимости на уровне Python (см. pyproject.toml) из
PyPI с помощью:
# All dependencies
python -m pip install -r requirements/all.txt
# Alternatively, you can install just the dependencies for certain
# development tasks:
# Build and dev dependencies (for `python dev.py {build, lint, mypy}`)
python -m pip install -r requirements/build.txt -r requirements/dev.txt
# Doc dependencies (for `python dev.py {doc, refguide-check}`)
python -m pip install -r requirements/doc.txt
# Test dependencies (for `python dev.py {test, bench, refguide-check}`)
python -m pip install -r requirements/test.txt
Для сборки SciPy в активированной среде разработки выполните:
python dev.py build
Это установит SciPy внутри репозитория (по умолчанию в
build-install каталог). Затем вы можете запустить тесты (python dev.py test),
перейти в IPython (python dev.py ipython), или выполнить другие шаги разработки, такие как сборка HTML-документации или запуск бенчмарков. dev.py
интерфейс самодокументируемый, поэтому, пожалуйста, смотрите python dev.py --help и
python dev.py для подробного руководства.
Поддержка IDE и редактируемые установки
Хотя dev.py интерфейс — наш рекомендуемый способ работы с SciPy, у него есть одно ограничение: из-за пользовательского места установки, SciPy, установленный с использованием dev.py не будут распознаны автоматически в
IDE (например, для запуска скрипта через кнопку «run» или установки точек останова
визуально). Это будет лучше работать с сборка на месте (или «редактируемая
установка»).
Поддерживаются редактируемые установки. Важно понимать, что вы можете использовать либо редактируемую установку, либо dev.py в клоне репозитория, но не оба одновременно. Если вы используете редактируемые установки, вам нужно использовать pytest
и другие инструменты разработки напрямую вместо использования dev.py.
Чтобы использовать редактируемую установку, убедитесь, что вы начинаете с чистого репозитория (выполните
git clean -xdf если вы собрали с dev.py ранее) и все зависимости настроены правильно, как описано выше на этой странице. Затем выполните:
# Note: the --no-build-isolation is important! meson-python will
# auto-rebuild each time SciPy is imported by the Python interpreter.
pip install -e . --no-build-isolation
# To run the tests for, e.g., the `scipy.linalg` module:
pytest scipy/linalg
При внесении изменений в код SciPy, включая скомпилированный код, нет необходимости вручную пересобирать или переустанавливать. При запуске git clean -xdf,
который удаляет встроенные модули расширения, не забудьте также удалить SciPy
с помощью pip uninstall scipy.
См. meson-python документация по редактируемым установкам для получения более подробной информации о том, как всё работает под капотом.
Установка статических заглушек типов#
Если вы хотите установить статические заглушки типов для помощи в разработке SciPy, вы можете включить scipy-stubs пакет в вашей среде разработки.
Доступен на PyPI и conda-forge - см. scipy-stubs руководство по установке.