В настоящее время у меня есть git и virtualenv, которые точно соответствует моим потребностям и, до сих пор, не вызвало никаких проблем. Однако я знаю, что моя установка нестандартная, и мне интересно, если кто-нибудь более знаком с virtualenv's внутренности могут указать, если и где, вероятно, это произойдет неправильно.
Моя настройка
Мой 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.
Я знаю, что это работает только с пакетами pure-Python, но все, о чем я беспокоюсь в данный момент.
Кто-нибудь знает какие-либо другие проблемы с этим подходом, о которых я должен знать?