Могу ли я исключить библиотеки из ремонта auditwheel?
я использую
Проблема в том, что он хочет упаковать библиотеки времени выполнения и драйверов 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
флаг.