Spec-Zone.ru › NumPy 2.0

Создание из исходного кода

Примечание

Если вы только пытаетесь установить 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 (или «Reference») 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. В противном случае вам потребуется один из этих наборов компиляторов:

  1. MSVC + Intel Fortran (ifort)
  2. Компиляторы Intel (icc, ifort)
  3. Компиляторы 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 и могут быть отключены, если нужно, для экономии места на диске).

Установщик MSVC не добавляет компиляторы в системную переменную PATH, и местоположение установки может изменяться. Для запроса местоположения установки MSVC поставляется утилита командной строки vswhere.exe. Для того, чтобы компиляторы C/C++ стали доступны в используемой оболочке, вам необходимо запустить файл .bat для правильной разрядности и архитектуры (например, для 64-битных процессоров Intel используйте vcvars64.bat).

Для подробных инструкций см. Использование набора инструментов Microsoft C++ из командной строки.

Аналогично MSVC, компиляторы Intel предназначены для использования со скриптом активации (Intel\oneAPI\setvars.bat), который вы запускаете в используемой оболочке. Это делает компиляторы доступными в переменной PATH. Для подробных инструкций см. Начало работы с Intel® oneAPI HPC Toolkit для Windows.

Существует несколько источников двоичных файлов для MinGW-w64. Мы рекомендуем версии RTools, которые можно установить с помощью Chocolatey (см. инструкции по установке Chocolatey здесь):

choco install rtools -y --no-progress --force --version=4.0.0.20220206

Примечание

Компиляторы должны быть в системной переменной PATH (т. е. переменная среды PATH должна содержать каталог, в котором находятся исполняемые файлы компилятора), за исключением MSVC, который будет найден автоматически только в том случае, если нет других компиляторов в PATH. Вы можете использовать любую оболочку (например, Powershell, cmd или Git Bash) для вызова сборки. Чтобы проверить это, попробуйте вызвать компилятор Fortran в используемой оболочке (например, gfortran --version или ifort --version).

Предупреждение

При использовании среды conda возможно, что создание среды не будет работать из-за устаревшего компилятора Fortran. Если это произойдет, удалите запись compilers из environment.yml и попробуйте снова. Компилятор Fortran следует установить, как описано в этом разделе.

Установка NumPy из исходного кода

Если вам нужно установить NumPy из исходного кода только один раз и не выполнять никаких работ по разработке, то рекомендуемым способом сборки и установки является использование pip. В противном случае рекомендуется использовать conda.

Примечание

Если у вас еще нет установки conda, мы рекомендуем использовать Mambaforge; однако подойдет любой дистрибутив conda.

Установка из исходного кода для использования NumPy

Если вы используете среду conda, pip по-прежнему является инструментом, который вы используете для вызова сборки NumPy из исходного кода. Важно всегда использовать флаг --no-build-isolation для команды pip install, чтобы избежать сборки по отношению к пакету numpy из 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
# 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

Затем вам нужно сделать следующее:

  1. Создайте отдельную среду разработки (виртуальную среду или среду conda),
  2. Установите все необходимые зависимости (build, а также test, doc и optional зависимости),
  3. Соберите 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” в документации по 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-уровня из PyPI с помощью:

python -m pip install -r requirements/all_requirements.txt

Для сборки NumPy в активированной среде разработки выполните:

spin build

Это установит NumPy внутри репозитория (по умолчанию в директории build-install). Затем вы можете запустить тесты (spin test), перейти к IPython (spin ipython) или выполнить другие шаги разработки, такие как создание HTML-документации или запуск бенчмарков. Интерфейс spin самодокументирующийся, поэтому подробные рекомендации см. в spin --help и spin <subcommand> --help.

Поддержка IDE и установленные пакеты

Хотя интерфейс spin является рекомендуемым способом работы с NumPy, у него есть одно ограничение: из-за пользовательского расположения установки, NumPy, установленный с помощью spin, не будет автоматически распознаваться в среде IDE (например, для запуска скрипта с помощью кнопки «Запустить» или установки точек останова визуально). Это будет работать лучше с локальной сборкой (или «установкой пакетов с редактированием»).

Редактируемые установки поддерживаются. Важно понимать, что вы можете использовать либо редактируемую установку, либо ``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. Заголовки, точки входа и другие подобные вещи могут быть недоступны из редактируемой установки.

Настройка сборок

  • Выбор компилятора и настройка сборки
  • BLAS и LAPACK
  • Кросс-компиляция
  • Сборка перераспределяемых бинарных файлов

Дополнительная информация

  • Понимание Meson
  • Интроспекция шагов сборки
  • Meson и distutils способы выполнения задач

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/building/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API