В настоящее время я настроил git и virtualenv таким образом, чтобы
соответствует моим потребностям и до сих пор не вызвало никаких проблем. Однако я знаю, что
мои настройки нестандартны, и мне интересно, если кто-нибудь более знаком с Virtualenv
внутренние органы могут указать, если и где это может пойти не так.
Моя настройка
Мой virtualenv находится внутри моего репозитория git, но git настроен на игнорирование каталогов bin
и include
и всего в lib
, кроме для каталога site-packages
.
Точнее, мой .gitignore
файл выглядит так:
*.pyc
# Ignore all the virtualenv stuff except the actual packages
# themselves
/bin
/include
/lib/python*/*
!/lib/python*/site-packages
# Ignore easyinstall and setuptools
/lib/python*/site-packages/easy-install.pth
/lib/python*/site-packages/setuptools.pth
/lib/python*/site-packages/setuptools-*
/lib/python*/site-packages/pip-*
При таком расположении я - и любой другой, работающий над оформлением заказа - могу использовать virtualenv и pip как обычно, но со следующими преимуществами:
Если кто-либо обновляет или устанавливает пакет и отправляет свои изменения, то любой, кто извлекает эти изменения, автоматически получает обновление: ему не нужно замечать, что файл requirements.txt
изменился, или выполнить любое post-receive
крючок магии.
Сетевых зависимостей нет: весь код для работы приложения живет в репозитории git.
Я знаю, что это работает только с чисто Python-пакетами, но это все, что меня сейчас интересует.
Кто-нибудь знает о каких-либо других проблемах с этим подходом, о которых мне следует знать?