LINUX.ORG.RU

Python: сборка модуля в Buildroot'е

 , , ,


1

1

Собираю питоновский модуль в билдруте (то есть вместе с рутфс линукса), питон3. Сам модуль оформлен в виде пакэйджа (билдрут стайл) по примеру соседних пакэйдей (тоже питоновских модулей). Модуль pandas - строиться на модуле numpy. Numpy есть родной в билдруте (тоже оформлен в виде пакейджа билдрут стайл). Проблема заключается вот в чем: при сборке родительский модуль не видит уже скомпилированные подмодули - в частности Numpy.

Например:

в setup.py

setup(
 'setup_requires': ['numpy >= {numpy_ver}'.format(numpy_ver=min_numpy_ver)],
)
вызывает скачивание модуля (по видимому pip'ом) модуля Numpy (хотя он уже есть и собрался).

там же

numpy_incl = pkg_resources.resource_filename('numpy', 'core/include')
приводит к ошибке ModuleNotFoundError: No module named 'numpy'

Может есть какие то ньюансы при сборке на хосте а не запуске модуля на таргете?

Ответ для тех, кто столкнётся с похожей проблемой: необходимо дочерние модули (модули, на основе которых вкомпиливается искомый модуль) собрать ни только для target но и для host, то есть интерпретатор не видит дочерние модули именно в host.

для этого в мейках (.mk) дочерних модулей помимо

$(eval $(python-package))
указываем
$(eval $(host-python-package))
, а в мейке родительского (искомого) модуля указываем зависимость
PYTHON_***_DEPENDENCIES += host-python-****
, где *** - название родительского модуля **** - название дочернего модуля (зависимости ессно)

Может для кого то, это элементарно, но в гугле я не нашел такой информации, не нашел даже намёка на какие то мануалы или аналогичные проблемы. Поэтому пришлось долго тыкать пальцем в небо пока не «нащупал»

k000858 ()