Недавно я начал проект Django, и я быстро понял, что virtualenv будет действительно полезен по многим причинам. Я настроил virtualenv и мой проект, но теперь я задаюсь вопросом, какой файл я должен добавить в свой исходный элемент управления (в моем случае Mercurial). Должен ли я добавить все файлы в папку venv? Как я могу убедиться, что коллега может клонировать и начать работать немедленно, когда вам нужно снова настроить env?
Virtualenv и контроль версий версий
Ответ 1
Вы создаете файл требований (обычно requirements.txt
), который вы совершаете с вашим проектом:
pip freeze > requirements.txt
Затем каждый разработчик установит свой собственный virtualenv и запустит:
pip install -r requirements.txt
Ответ 2
Все эти проблемы с окружающей средой являются обычным явлением, когда вы занимаетесь разработкой python/django! Я прошел через все эти проблемы, и я протестировал некоторые решения! Вещи, которые я тестировал:
- Проект работает локально
- Выполнение проекта в virtualenv
- Проект, выполняющийся в VM
- Проект работает в виртуальной машине, используя брандмауэр
Лучшее решение, которое я нашел, было №4! потому что компания, с которой я работал, каждый человек в команде имеет другую ОС, все виды окон, mac и linux, а для установки всех зависимостей для каждой среды требуется время! Поэтому мы решили попробовать virtualenv, что действительно хорошо! но все же каждый человек должен настроить собственное окружение. Проблема в virtualenv заключается в том, что все источники python находятся в среде, которую создаю! Поэтому я бы не стал подталкивать эти файлы к исходному контролю версии! Лучшее решение было №4, потому что это было именно то, что мне нужно, Vagrant использует Chef для настройки вашей среды, поэтому вам просто нужно написать несколько рецептов, и пусть бродяга запускает их для u! Затем u нажимайте эти рецепты на SCM, затем, когда следующий человек получит файлы из SCM и перезагрузит VM, все зависимости будут автоматически установлены!
У меня есть сообщение в блоге, объясняющее больше о предмете, а также я создал проект Django Blank в github, чтобы вы могли получить это есть начальная точка вашего проекта с использованием бродяг.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (ссылка больше не активна, поэтому связана с Wayback Machine)
ИЗМЕНИТЬ
Решение от Chris Pratt также является хорошим, однако некоторые библиотеки не так просто установить во всех ОС, например, многие люди на Mac получают проблемы, когда хотят установить MySQLdb-python. который является действительно общей библиотекой, но если все в вашей команде должны тратить время на решение этих проблем, это не очень хорошо!