Могу ли я исключить библиотеки из ремонта auditwheel?

я использую создать несколько предварительно скомпилированных колес Linux для библиотеки Python, которая действует как API для библиотеки C++ с использованием CUDA. Я создаю колеса с , затем запустите, чтобы включить внешние библиотеки в колеса (моя библиотека C++, pybind11 и т. д.)

Проблема в том, что он хочет упаковать библиотеки времени выполнения и драйверов CUDA в колесо. В идеале я бы хотел оставить установку CUDA на усмотрение пользователя, а не включать ее в колесо Python (я даже не уверен, насколько точно она распространяется).

Кто-нибудь знает способ занести в черный список библиотеки cuda из ? Или, может быть, еще один лучший способ сделать это?

2 ответа

Способ есть, но он как бы противоречит цели ремонта колеса аудита.

Вам нужно установить auditwheel как модуль Python, затем импортировать его в свой собственный скрипт Python и исправить некоторые значения, которые определяют политики восстановления.

      # Monkey patch to not ship libjvm.so in pypi wheels
import sys

from auditwheel.main import main
from auditwheel.policy import _POLICIES as POLICIES

# libjvm is loaded dynamically; do not include it
for p in POLICIES:
    p['lib_whitelist'].append('libjvm.so')

if __name__ == "__main__":
    sys.exit(main())

Этот фрагмент из проекта diplib , который делает то, что вы хотите для библиотек Java. Вам нужно будет изменить этот скрипт, чтобы охватить библиотеки, которые вам нужно внести в белый список.

Затем этот сценарий должен быть вызван интерпретатором Python 3.x, иначе он не будет работать. Вы можете отремонтировать колеса Python 2.7 таким образом, если вам нужно. В проекте diplib также показан пример вызова , который должен произойти в док-контейнере manylinux.

      #!/bin/bash
# Run this in a manylinux2010 docker container with /io mounted to some local directory

# ...

/opt/python/cp37-cp37m/bin/python -m pip install cmake auditwheel  # ignore "cmake"

# ...

export AUDITWHEEL=`pwd`/diplib/tools/travis/auditwheel  # the monkey patch script

# ...

/opt/python/cp37-cp37m/bin/python $AUDITWHEEL repair pydip/staging/dist/*.whl

# ...

Прямо сейчас это возможно с помощьюauditwheel repair --excludeфлаг.

Другие вопросы по тегам