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