Virtualenv и управление версиями исходного кода


недавно я запустил проект Django и быстро понял, что virtualenv будет действительно полезен по многим причинам. Я настроил virtualenv и свой проект, но теперь мне интересно, какой файл я должен добавить в свой исходный код (в моем случае Mercurial). Должен ли я добавить все файлы в папку venv? Как я могу убедиться, что коллега может клонировать и сразу же начать работать без необходимости снова настраивать env?

2 64

2 ответа:

вы создаете файл "требования" (обычно requirements.txt) что вы делаете с вашим проектом:

pip freeze > requirements.txt

затем каждый разработчик настроит свой собственный virtualenv и запустит:

pip install -r requirements.txt

все эти проблемы с окружающей средой являются довольно распространенными, когда вы занимаетесь разработкой python/django! Я прошел через все эти проблемы, и я проверил некоторые решения! Вещи, которые я проверил:

  1. проект работает локально
  2. проект работает в virtualenv
  3. проект работает в виртуальной машине
  4. проект работает в виртуальной машине, используя vagrant

лучшее решение, которое я нашел, было #4! потому что компания, в которой я раньше работал, каждая человек в команде имеет другую ОС, все виды windows, mac и linux, и для установки всех зависимостей для каждой среды требуется время! Поэтому мы решили попробовать virtualenv, что действительно хорошо! но все же каждый человек должен создать свое собственное окружение. Проблема в virtualenv заключается в том, что все источники python находятся в среде, которую вы создаете! Поэтому я бы не стал нажимать эти файлы на исходный контроль версий! Лучшим решением было #4, потому что это было именно то, что мне нужно, Vagrant использует шеф-повара настройте свою среду, поэтому вам просто нужно написать несколько рецептов, и пусть vagrant запускает их для u! Затем вы нажимаете эти рецепты на SCM, а затем, когда следующий человек получит файлы из SCM и перезагрузит виртуальную машину, все зависимости будут автоматически установлены!

У меня есть сообщение в блоге, объясняющее больше о предмете, а также я создал проект Django Blank в github таким образом, вы можете получить, что иметь начальную точку вашего проекта с помощью бродяга.

http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (Ссылка Больше не активна, поэтому связана с Wayback Machine)

EDIT

решение от Chris Pratt также является хорошим, однако некоторые библиотеки не так просты в установке во всех ОС, например, многие люди на Mac получают проблемы, когда они хотят установить MySQLdb-python. это действительно общая библиотека, но если все в вашей команде должны тратить время на решение этой проблемы, совсем не хорошо!