Недавно я начал проект Django и быстро понял, что virtualenv будет действительно полезен по многим причинам. Я настроил virtualenv и свой проект, но теперь мне интересно, какой файл мне добавить в систему управления версиями (в моем случае - Mercurial). Должен ли я добавить все файлы в папку venv? Как мне убедиться, что коллега может клонировать и сразу приступить к работе, без необходимости заново настраивать env?
python
django
mercurial
virtualenv
Мартин
источник
источник
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
. Другие разработчики должны настроить свой собственный virtualenv, но это буквально две команды -virtualenv ~/path/to/env
,~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
.Ответы:
Вы
requirements.txt
создаете файл «требований» (обычно ), который фиксируете вместе с вашим проектом:Затем каждый разработчик настроит свой собственный virtualenv и запустит:
источник
Все эти проблемы с окружением являются обычным явлением, когда вы занимаетесь разработкой на python / django! Я прошел через все эти проблемы и протестировал некоторые решения! Вещи, которые я тестировал:
Лучшее решение, которое я нашел, было №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. это действительно распространенная библиотека, но если каждый в вашей команде должен тратить время на решение этой проблемы, это совсем не хорошо!
источник
MySQLdb-python
Это действительно хорошая причина для использования полноценной среды, но нельзя ли этого также сделать с помощью pip / requirements.txt?