Virtualenv и контроль версий исходного кода - PullRequest
73 голосов
/ 06 марта 2012

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

Ответы [ 2 ]

89 голосов
/ 06 марта 2012

Вы генерируете файл «требований» (обычно requirements.txt), который вы фиксируете в своем проекте:

pip freeze > requirements.txt

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

pip install -r requirements.txt
6 голосов
/ 06 марта 2012

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

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

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

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

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

РЕДАКТИРОВАТЬ

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...