setup.py: зависит от пакетов CSS и JS.

У меня есть проект Python, который отображает некоторую информацию в браузере и использует bootstrap и D3. Прямо сейчас я просто включаю bootstrap.min.css и d3.v5.min.js в репозиторий исходного кода, добавляю их в package_data в setup.py и обновляю их по мере выпуска новых версий. Это довольно некрасиво конечно.

Я хотел бы указать bootstrap и D3 как зависимость в setup.py; любой намек на то, как это может быть возможно?


person Nico Schlömer    schedule 18.07.2018    source источник
comment
может использовать файлы данных? docs.python.org/2/distutils/   -  person Sreyas    schedule 18.07.2018
comment
@Sreyas Ну, файлы, конечно, указаны в setup.py каким-то образом, поэтому они вообще устанавливаются; в моем случае как package_data. Однако мне все еще нужно хранить их в репо. Уточнил в вопросе.   -  person Nico Schlömer    schedule 18.07.2018
comment
Вы хотите, чтобы файлы загружались при установке этого пакета? На самом деле я не думаю, что это хорошая идея, так как в этом случае этот пакет не сможет быть установлен в автономном режиме. Возможно, лучше добавить код в setup.py для автоматической загрузки этих файлов во время упаковки. Чтобы встроенное колесо содержало все необходимое, а файлы обновлялись автоматически при выпуске новой версии.   -  person Sraw    schedule 18.07.2018
comment
Ну, если вы устанавливаете что-то, вам все равно нужно быть в сети, верно? Я также никогда не упаковываю все свои зависимости Python.   -  person Nico Schlömer    schedule 18.07.2018
comment
Если вы ожидаете, что ваши пользователи будут в сети с самого начала, вы можете вместо этого указать CDN. Если по какой-то причине вы не хотите обслуживать эти библиотеки через CDN, вам потребуется какой-то интерфейсный пакет управления зависимостями в целевой системе. Если вы можете это предположить, то вы можете переопределить класс build или build_ext (или какой-либо другой подходящий шаг сборки, через который проходит pip) в аргументе cmdclass на setup, чтобы установить эти интерфейсные зависимости через пряжу/npm/что угодно.   -  person Thtu    schedule 18.07.2018
comment
Как насчет обнаружения и загрузки файлов вручную в setup.py? Этот код будет выполняться во время установки.   -  person Sraw    schedule 18.07.2018
comment
@Sraw Да, это должно быть что-то вроде этого. Одна проблема (возможно, не совсем связанная с этим вопросом) заключается в том, что мне потребуются requests во время установки, но пока нет возможности указать их (см. этот вопрос).   -  person Nico Schlömer    schedule 18.07.2018
comment
requests является одной из зависимостей pip. Поэтому, если пользователь использует pip install ... для установки вашего пакета, он должен иметь requests.   -  person Sraw    schedule 18.07.2018
comment
github.com/pypa/pip/tree/master/src/ pip/_vendor/запросы   -  person Sraw    schedule 18.07.2018