Лучший способ включения сторонних зависимостей в приложение Python

Каков наилучший способ распространения зависимостей для приложения?

Предположим, я хочу опубликовать приложение, которое зависит от SqlAlchemy – есть ли чистый способ включить SqlAlchemy в мой репозиторий, не заставляя пользователя его устанавливать?

Стандартом сообщества является использование диспетчера пакетов pip с файлом требований .

Например

 SQLAlchemy>=0.9.8 

Это заставит установку SQLAlchemy с версией выше или равной 0.9.8 .

Если вы хотите распространять свой код автономно, вы можете рассмотреть возможность создания отдельного каталога для сторонних пакетов и расширения переменной среды PYTHONPATH .

export PYTHONPATH=$PYTHONPATH:/path/to/3rdpartypackages/

Хотя это заставит пользователя установить его, я бы рекомендовал использовать для этого файл требований к протоколам. ( http://www.pip-installer.org/en/latest/user_guide.html#requirements-files )

Для этой конкретной проблемы файл может быть прост, как одна строка:

 SQLAlchemy 

Как общая практика, вы должны указать номер версии, на которую вы зависите в этом файле. Если вы не хотите, чтобы пользователь должен был устанавливать вещи, потому что вы беспокоитесь о загрязнении их основной установки, я хотел бы использовать VirtualEnv для этого ( http://www.virtualenv.org/en/latest/ ) – Это рекомендуемое средство распределения зависимостей для проектов Django, по крайней мере.