Сборка из исходного кода#
Примечание
Если вы только пытаетесь установить NumPy, мы рекомендуем использовать бинарные файлы - см. Установка для подробностей об этом.
Сборка NumPy из исходного кода требует сначала настройки системных зависимостей (компиляторы, библиотеки BLAS/LAPACK и т.д.), а затем запуска сборки. Сборка может выполняться для установки NumPy для локального использования, разработки самого NumPy или создания распространяемых бинарных пакетов. И может потребоваться настроить аспекты того, как выполняется сборка. Это руководство охватывает все эти аспекты. Кроме того, оно предоставляет справочную информацию о том, как работает сборка NumPy, и ссылки на актуальные руководства по общей документации по сборке и упаковке Python, которая имеет отношение к делу.
Зависимости на уровне системы#
NumPy использует скомпилированный код для скорости, что означает, что вам нужны компиляторы и некоторые другие системные зависимости (т.е. не-Python / не-PyPI) для сборки в вашей системе.
Примечание
Если вы используете Conda, вы можете пропустить шаги в этом разделе - за исключением
установки компиляторов для Windows или Apple Developer Tools
для macOS. Все остальные зависимости будут установлены автоматически
mamba env create -f environment.yml команда.
Если вы хотите использовать системный Python и pip, вам потребуется:
Компиляторы C и C++ (обычно GCC).
Заголовочные файлы Python (обычно пакет с именем
python3-devилиpython3-devel)Библиотеки BLAS и LAPACK. OpenBLAS является значением по умолчанию NumPy; другие варианты включают Apple Accelerate, MKL, ATLAS и Netlib (или «Ссылочный») BLAS и LAPACK.
pkg-configдля обнаружения зависимостей.Компилятор Fortran нужен только для запуска
f2pyтесты. Инструкции ниже включают компилятор Fortran, однако вы можете безопасно его опустить.
Чтобы установить требования для сборки NumPy, вы можете сделать:
sudo apt install -y gcc g++ gfortran libopenblas-dev liblapack-dev pkg-config python3-pip python3-dev
В качестве альтернативы, вы можете сделать:
sudo apt build-dep numpy
Эта команда устанавливает всё необходимое для сборки NumPy, с преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Чтобы установить требования для сборки NumPy, вы можете сделать:
sudo dnf install gcc-gfortran python3-devel openblas-devel lapack-devel pkgconfig
В качестве альтернативы, вы можете сделать:
sudo dnf builddep numpy
Эта команда устанавливает всё необходимое для сборки NumPy, с преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Чтобы установить требования для сборки NumPy, вы можете сделать:
sudo yum install gcc-gfortran python3-devel openblas-devel lapack-devel pkgconfig
В качестве альтернативы, вы можете сделать:
sudo yum-builddep numpy
Эта команда устанавливает всё необходимое для сборки NumPy, с преимуществом, что новые зависимости или обновления требуемых версий обрабатываются менеджерами пакетов.
Чтобы установить требования для сборки NumPy, вы можете сделать:
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.
На macOS >=13.3 самый простой вариант сборки — использовать Accelerate, который уже установлен и будет автоматически использоваться по умолчанию.
В старых версиях macOS требуется другая библиотека BLAS, скорее всего OpenBLAS, плюс pkg-config для обнаружения OpenBLAS. Их проще всего установить с помощью Homebrew:
brew install openblas pkg-config gfortran
В Windows использование компилятора Fortran сложнее, чем на других
платформах, потому что MSVC не поддерживает Fortran, а gfortran и MSVC
не могут использоваться вместе. Если вам не нужно запускать f2py тестов, просто
использование MSVC проще всего. В противном случае вам понадобится один из этих наборов
компиляторов:
MSVC + Intel Fortran (
ifort)Компиляторы Intel (
icc,ifort)Компиляторы Mingw-w64 (
gcc,g++,gfortran)
По сравнению с macOS и Linux, сборка NumPy на Windows немного сложнее из-за необходимости настройки этих компиляторов. Невозможно просто вызвать однострочную команду в командной строке, как на других платформах.
Сначала установите Microsoft Visual Studio - версия 2019 Community Edition или любая более новая версия подойдет (см. сайт загрузки Visual Studio). Это необходимо даже при использовании компиляторов MinGW-w64 или Intel, чтобы обеспечить наличие Windows Universal C Runtime (другие компоненты Visual Studio не нужны при использовании Mingw-w64 и могут быть отключены, если требуется, для экономии места на диске). Рекомендуемая версия UCRT - >= 10.0.22621.0.
Установщик MSVC не добавляет компиляторы в системный путь, и место установки может меняться. Чтобы запросить место установки, MSVC поставляется с vswhere.exe утилита командной строки. И чтобы сделать
компиляторы C/C++ доступными внутри используемой оболочки, вам нужно
запустить .bat файл для правильной разрядности и архитектуры (например, для
64-битных процессоров Intel используйте vcvars64.bat).
Если используется среда Conda, а установлена версия Visual Studio 2019+, включающая пакет MSVC v142 (инструменты сборки VS 2019 C++ x86/x64), активация среды conda должна привести к обнаружению Visual Studio и выполнению соответствующего .bat файла для установки этих переменных.
Для подробного руководства см. Использование набора инструментов Microsoft C++ из командной строки.
Подобно MSVC, компиляторы Intel предназначены для использования со скриптом активации (Intel\oneAPI\setvars.bat), который вы запускаете в используемой оболочке. Это делает компиляторы доступными в пути. Подробные инструкции см. в
Начните работу с Intel® oneAPI HPC Toolkit для Windows.
Существует несколько источников бинарных файлов для MinGW-w64. Мы рекомендуем версии RTools, которые можно установить с помощью Chocolatey (см. инструкции по установке Chocolatey здесь):
choco install rtools -y --no-progress --force --version=4.0.0.20220206
Примечание
Компиляторы должны быть в системном пути (т.е., PATH переменная окружения должна содержать каталог, в котором могут быть найдены исполняемые файлы компилятора, чтобы быть найденной, за исключением MSVC, который будет найден автоматически, если и только если на PATH. Вы можете использовать любую оболочку (например, Powershell, cmd или
Git Bash) для запуска сборки. Чтобы проверить это, попробуйте
вызвать компилятор Fortran в используемой вами оболочке (например, gfortran
--version или ifort --version).
Предупреждение
При использовании окружения conda возможно, что создание окружения
не сработает из-за устаревшего компилятора Fortran. Если это
произойдет, удалите compilers запись из environment.yml и
попробуйте снова. Компилятор Fortran должен быть установлен, как описано в
этом разделе.
В Windows на ARM64 набор доступных опций компилятора для
сборки NumPy ограничен. Компиляторы, такие как GCC и GFortran, пока не
поддерживаются для Windows на ARM64. В настоящее время сборка NumPy для Windows на ARM64
поддерживается с помощью инструментариев MSVC и LLVM. Использование компилятора Fortran
более сложно, чем на других платформах, потому что MSVC не поддерживает Fortran, а
gfortran и MSVC нельзя использовать вместе. Если вам не нужно запускать f2py
тесты, проще всего использовать MSVC. В противном случае вам понадобится следующий набор компиляторов:
MSVC + flang (
cl,flang)LLVM + flang (
clang-cl,flang)
Сначала установите Microsoft Visual Studio — подойдёт Community Edition 2022 (см. сайт загрузки Visual Studio). Убедитесь, что вы установили необходимые компоненты Visual Studio для сборки NumPy на WoA из здесь.
Для использования компилятора flang для Windows на ARM64 установите последнюю версию LLVM toolchain для WoA из здесь.
Установщик MSVC не добавляет компиляторы в системный путь, и место установки может меняться. Чтобы запросить место установки, MSVC поставляется с vswhere.exe утилита командной строки. И чтобы сделать
компиляторы C/C++ доступными внутри используемой оболочки, вам нужно
запустить .bat файл для правильной разрядности и архитектуры (например, для
процессоров на базе ARM64, используйте vcvarsarm64.bat).
Для подробного руководства см. Использование набора инструментов Microsoft C++ из командной строки.
Аналогично MSVC, LLVM не помещает компиляторы в системный путь.
Для установки системного пути для компиляторов LLVM пользователям может потребоваться использовать set
команда для добавления компиляторов в системный путь. Чтобы проверить путь компилятора для LLVM clang-cl, попробуйте вызвать компилятор LLVM clang-cl в используемой оболочке (clang-cl --version).
Примечание
Компиляторы должны быть в системном пути (т.е., PATH переменная окружения должна содержать каталог, в котором могут быть найдены исполняемые файлы компилятора, чтобы быть найденной, за исключением MSVC, который будет найден автоматически, если и только если на PATH. Вы можете использовать любую оболочку (например, Powershell, cmd или
Git Bash) для запуска сборки. Чтобы проверить это, попробуйте
вызвать компилятор Fortran в используемой вами оболочке (например, flang
--version).
Предупреждение
В настоящее время среда Conda официально еще не поддерживается на Windows на ARM64. Текущий подход использует virtualenv для сборки NumPy из исходного кода на Windows на ARM64.
Сборка NumPy из исходного кода#
Если вы хотите установить NumPy из исходников только один раз и не заниматься разработкой,
то рекомендуемый способ сборки и установки — использовать pip.
В противном случае рекомендуется conda.
Примечание
Если у вас ещё нет установки conda, мы рекомендуем использовать Miniforge; хотя подойдет любая версия conda.
Сборка из исходного кода для использования NumPy#
Если вы используете окружение conda, pip все еще инструмент, который вы используете для запуска сборки NumPy из исходного кода. Важно всегда использовать
--no-build-isolation флаг в pip install команда, чтобы избежать сборки против numpy wheel из PyPI. Чтобы это работало, вы
должны сначала установить оставшиеся зависимости сборки в окружение conda:
# Either install all NumPy 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 compilers openblas meson-python pkg-config
# To build the latest stable release:
pip install numpy --no-build-isolation --no-binary numpy
# To build a development version, you need a local clone of the NumPy git repository:
git clone https://github.com/numpy/numpy.git
cd numpy
git submodule update --init
pip install . --no-build-isolation
Предупреждение
В Windows могут быть установлены переменные окружения AR, LD и LDFLAGS, что приведет к сбою команды pip install. Эти переменные нужны только для flang и могут быть безопасно сброшены перед запуском pip install.
# To build the latest stable release:
pip install numpy --no-binary numpy
# To build a development version, you need a local clone of the NumPy git repository:
git clone https://github.com/numpy/numpy.git
cd numpy
git submodule update --init
pip install .
Сборка из исходников для разработки NumPy#
Если вы хотите собрать из исходного кода, чтобы работать над самим NumPy, сначала клонируйте репозиторий NumPy:
git clone https://github.com/numpy/numpy.git
cd numpy
git submodule update --init
Затем вам нужно сделать следующее:
Создайте выделенную среду разработки (виртуальное окружение или conda-окружение),
Установите все необходимые зависимости (build, а также тест, doc и необязательный зависимости),
Собрать NumPy с
spinинтерфейс разработчика.
Шаг (3) всегда одинаков, шаги (1) и (2) различаются между conda и виртуальными окружениями:
Чтобы создать numpy-dev среду разработки со всеми необходимыми и
необязательными зависимостями, запустите:
mamba env create -f environment.yml
mamba activate numpy-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
python -m venv venv
.\venv\Scripts\activate
Примечание
Сборка NumPy с функциями BLAS и LAPACK требует библиотеки OpenBLAS во время выполнения. В Windows на ARM64 это можно сделать, настроив pkg-config для зависимости OpenBLAS. Шаги сборки OpenBLAS для Windows на ARM64 можно найти здесь.
Затем установите зависимости на уровне Python из PyPI с помощью:
python -m pip install -r requirements/build_requirements.txt
Для сборки NumPy в активированной среде разработки выполните:
spin build
Это установит NumPy внутри репозитория (по умолчанию в
build-install каталог). Затем вы можете запустить тесты (spin test),
перейти в IPython (spin ipython), или выполнить другие шаги разработки, такие как сборка HTML-документации или запуск бенчмарков. spin
интерфейс самодокументируемый, поэтому, пожалуйста, смотрите spin --help и
spin для подробного руководства.
Предупреждение
В активированной среде conda на Windows могут быть установлены переменные окружения AR, LD и LDFLAGS, что приведёт к сбою сборки. Эти переменные нужны только для flang и могут быть безопасно сброшены для сборки.
Поддержка IDE и редактируемые установки
Хотя spin интерфейс является нашим рекомендуемым способом работы с NumPy,
у него есть одно ограничение: из-за пользовательского местоположения установки, NumPy,
установленный с использованием spin не будут распознаны автоматически в
IDE (например, для запуска скрипта через кнопку «run» или установки точек останова
визуально). Это будет лучше работать с сборка на месте (или «редактируемая
установка»).
Поддерживаются редактируемые установки. Важно понимать, что вы
можете использовать либо редактируемую установку, либо spin в данном клоне репозитория,
но не в обоих. Если вы используете редактируемые установки, вам нужно использовать pytest
и другие инструменты разработки напрямую вместо использования spin.
Чтобы использовать редактируемую установку, убедитесь, что вы начинаете с чистого репозитория (выполните
git clean -xdf если вы собрали с spin ранее) и все зависимости настроены правильно, как описано выше на этой странице. Затем выполните:
# Note: the --no-build-isolation is important!
pip install -e . --no-build-isolation
# To run the tests for, e.g., the `numpy.linalg` module:
pytest numpy/linalg
При внесении изменений в код NumPy, включая скомпилированный код, нет необходимости вручную пересобирать или переустанавливать. NumPy автоматически пересобирается каждый раз при импорте NumPy интерпретатором Python; см. meson-python документация по редактируемым установкам для подробностей о том, как это работает под капотом.
Когда вы запускаете git clean -xdf, который удаляет встроенные модули расширения, не забудьте также удалить NumPy с помощью pip uninstall numpy.
Предупреждение
Обратите внимание, что редактируемые установки являются принципиально неполными установками. Их единственная гарантия заключается в том, что import numpy работает - поэтому они
подходят для работы с самим NumPy и для работы с чистыми пакетами Python,
которые зависят от NumPy. Заголовки, точки входа и другие подобные
вещи могут быть недоступны при установке в режиме редактирования.