#python-3.x #numpy #linker #distutils
Вопрос:
Поэтому я хотел бы создать numpy против MKL BLAS в Ubuntu 20.04.
У меня нет проблем с созданием и связыванием с установленным в системе mkl (например intel-mkl
, из пакета Ubuntu). Как описано в документе, site.cfg.example
я создал копию site.cfg
рядом с ним и заполнил соответствующую информацию
[mkl]
library_dirs = /path/to/my/local/mkl/lib
include_dirs = /path/to/my/local/mkl/include
libraries = mkl_rt
Я могу создать колесо python -m build --wheel
, связанное с этим MKL , я могу установить его нормально pip install my_numpy.whl
и после import numpy
, numpy.show_config()
показывает ожидаемую информацию о mkl.
Теперь то, что я хотел бы сделать, — это быть независимым от
- установленная система mkl
- абсолютные пути в
library_dirs
иinclude_dirs
Вся необходимая библиотека и включающие файлы для построения и связывания с MKL доступны в пакетах PyPI mkl и mkl-include. Я хотел бы настроить процесс сборки, в котором эти два пакета загружаются, создаются и сопоставляются, а также добавляются в требования. Теперь я понимаю, что запуск python3 -m build
создает отдельный venv и предварительно устанавливает все пакеты, перечисленные в pyproject.toml
. Здесь моя отредактированная версия с mkl
и mkl-include
добавлена внизу
[build-system]
# Minimum requirements for the build system to execute.
requires = [
"packaging==20.5; platform_machine=='arm64'", # macos M1
"setuptools<49.2.0",
"wheel==0.36.2",
"Cython>=0.29.24,<3.0", # Note: keep in sync with tools/cythonize.py
"mkl-include<2021.2",
"mkl<2021.2"
]
Я застрял на том, что нужно поместить в site.cfg
раздел library_dirs
и include_dirs
использовать файлы из пакетов, установленных сборкой venv. Есть ли способ включить префикс текущего venv в эти пути? Если да, то как? Есть ли numpy.distutils
что — нибудь в этом отношении в предложении?
Или мне нужно подойти к этой проблеме по-другому? Например, есть ли способ построить numpy и создать. whl, но без явной привязки, т. е. привязка может быть отложена до фактического времени установки встроенного колеса, где найдены фактические библиотеки времени выполнения MKL (в данном случае /path/to/my/current/venv/lib
) и связаны с ними? Возможно ли это вообще с помощью колеса?
Спасибо за вашу помощь!