Какова наилучшая практика для включения сторонних библиотек в программу на Python?

#python #python-module

#python #python-module

Вопрос:

Добрый день.

Я пишу программу на Python небольшого и среднего размера для своей работы. Задача требует, чтобы я использовал библиотеки Excel xlwt и xlrd, а также библиотеку для запросов к базам данных Oracle, называемую cx_Oracle. Я разрабатываю проект с помощью системы контроля версий, а именно CVS.

Мне было интересно, каков стандартный способ организации сторонних библиотек вокруг проекта на Python. Должны ли библиотеки xlwt, xlrd и cx_Oracle храниться в каталоге, таком как /usr/local/lib /python, который предположительно имеет свое место в PYTHONPATH? Или вместо этого сторонние библиотеки должны быть включены в тот же каталог, что и исходный код проекта, фактически «поставляться» вместе с проектом, таким образом, скрипт на python более независим от платформы.

Я просто ищу лучшие практики, поскольку я перехожу с Java и новичок в Python.

Заранее спасибо,
ktm

Комментарии:

1. Модули устанавливаются вашей компанией самостоятельно или это встроенные модули, которые поставляются в комплекте с Python?

2. @Henry Это действительно не имеет никакого отношения к его вопросу. Это действительно не относится к рассматриваемому вопросу.

Ответ №1:

У вас в основном есть два варианта (точно так же, как вы могли бы узнать из Java).

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

Лучший способ обработки зависимостей — документировать, каковы зависимости ваших приложений. Один из способов сделать это — определить requirements.txt файл в формате pip, который затем может быть запущен pip install -r requirements.txt , который приступит к установке всех зависимостей. Buildout — это еще один вариант, который вы можете использовать.

Комментарии:

1. Давайте также упомянем, что setuptools (и его дистрибутив fork), библиотека, лежащая в основе pip и buildout, имеет свой собственный формат зависимостей и базовый установщик, который способен извлекать deps.