Как лучше всего распространять пакеты Python с _large_ зависимостями данных - PullRequest
3 голосов
/ 14 марта 2012

Я работаю над новым пакетом Python, который зависит от многих довольно больших (> 20 МБ каждый) файлов данных. В частности, библиотека ожидает, что файлы данных будут находиться в каталоге data/ во время выполнения.

В настоящее время они находятся в каталоге «data» как часть дистрибутива, и мой скрипт setup.py настроен для установки этих файлов в систему пользователя через python setup.py install. Пока это работает, но, похоже, это не позволит мне загрузить дистрибутив в PyPI, учитывая, что tarball, вероятно, превысит несколько сотен Мб.

В качестве альтернативы я хотел бы "разместить" файлы на удаленном сайте, чтобы они были вежливы с PyPI, и чтобы файлы автоматически извлекались и устанавливались. Возможно ли это с помощью существующих методов распространения Python? Если да, не могли бы вы описать, как это сделать или привести пример? Если это невозможно, каковы наилучшие методы для этого?

Любое понимание, которое вы могли бы предложить, было бы очень кстати.

1 Ответ

2 голосов
/ 14 марта 2012

NLTK имеет аналогичную ситуацию в распределении их корпусных данных. В моем дистрибутиве Linux данные находятся в отдельном пакете, поэтому я провел некоторое исследование, установив его с помощью setuptools в Windows.

Если вы попытаетесь использовать корпус, а у вас его нет, nltk попросит вас запустить функцию загрузчика (nltk.download()). Внутренне он использует LazyCorpusLoader в качестве отдельного объекта для корпусных объектов, которым нужны данные, а затем загружает данные, когда это необходимо.

Как и sys.path, он заранее ищет несколько путей, чтобы пользователь мог поместить его в любое место. Вы также можете изменить nltk.data.path, чтобы добавить собственное местоположение для данных.

...