2013-12-06 3 views
4

Я изучаю способы добавления бродяг в мою среду разработки. Я занимаюсь большей частью своей веб-разработкой в ​​python, и меня интересуют специфические для python особенности, однако вопрос более общий.Использование бродяг как часть среды разработки

Мне нравится идея иметь все связанные с развитием вещи, изолированные на виртуальной машине, но я еще не нашел эффективного способа работать с ним. В принципе, я вижу 3 способа, чтобы установить его:

  1. Have все сервисы (например, сервер баз данных, MQ, и т.д.), а также применение в стадии разработки для запуска в VM. Разработчик мог бы ssh для VM и редактировать источники там, запускать приложение, тесты и т. Д., Все в ssh-терминале.

  2. То же, что и 1), но редактировать источники на главной машине в сопоставленной директории с помощью обычного графического редактора. Запустите приложение и тесты на бродяжнике через ssh. Это, по-видимому, самый популярный способ использования бродяг.

  3. Принимать только внешние службы в виртуальной машине. Установите зависимости приложений в virtualenv на хост-машине и запустите приложение и тесты оттуда.

Все эти подходы имеют свои недостатки:

  1. Разработка в текстовой консоли слишком неудобной, и это шоу-стоппер для меня. Хотя я опытный пользователь ViM и могу жить с ним, я не могу рекомендовать этот подход для тех, кто привык работать в любой графической среде IDE.

  2. Вы можете разработать свои знакомые инструменты, но вы не можете использовать автозаполнение, так как все библиотеки python установлены в VM. Ваши трассировки укажут на нелокальные файлы. Вы не сможете открывать источники библиотеки в своем редакторе, ctags не будут работать.

  3. Потеря большинства функций «изоляции»: вам необходимо установить все компиляторы, * -dev, чтобы установить зависимости python и запустить приложение. Это довольно легко для Linux, но было бы намного сложнее установить их на OSX, а в Windows это почти невозможно, я думаю.

Таким образом, речь идет: есть ли какое-либо средство для задач 2-го и 3-го подходов? Более конкретно, как можно создать изолированную и легко реплицируемую среду, и тем не менее пользоваться всем комфортом разработки на главной машине?

+0

У меня были подобные размышления. Вы нашли хорошее решение? В последнее время я думал, что Docker (или Linux-контейнеры, в более общем плане) может обеспечить лучшую систему, но я еще не тестировал ее. –

+0

Лично я использую третий вариант сверху. Все мои разработчики используют Ubuntu, поэтому у нас есть роскошь иметь довольно похожие конфигурации хост-машин. Поэтому мы просто можем установить кучу пакетов ubuntu и избавиться от него. Я пришел к выводу, что вы * имеете *, чтобы принести эти жертвы во имя независимости сообщества разработчиков. И только имеет смысл переключиться на вариант 1 или 2, когда текущая цена варианта 3 становится слишком высокой (т. Е. Вам нужно поддерживать слишком много вариантов среды разработки). Но я все еще слежу за этим.Если Докер решает хотя бы некоторые из этих проблем, дайте мне знать! –

+0

Моя проблема с № 3 заключается в том, что делать, если разные проекты имеют конфликтующие зависимости. Теперь я понял, что PyCharm работает с Vagrant, позволяя удаленным интерпретаторам Python. Конечно, это специфичный Python и может связать вас с IDE (я не знаю, поддерживают ли другие это). С Docker я надеюсь, что у вас может быть среда разработки для каждого проекта, в комплекте с графическим редактором. Конечно, вы уже можете сделать это с помощью других методов виртуализации, но с большей производительностью. –

ответ

0

В большинстве IDE вы можете добавить «библиотечный» путь, который находится за пределами проекта, чтобы работать с вашим кодом и т. Д. Что касается трассировки, я не знаком с python, но это звучит как проблема, которая разрешается путем «сопоставления» между серверами и dev-машиной. Это, как правило, причина, почему №2 часто является способом (за исключением того, что у вас есть команда, желающая сделать № 1).

+0

Вы можете добавить путь к библиотеке вне проекта, но не внутри виртуальной машины, если только папка, которую вы используете между экземпляром Vagrant и узлом, не является просто кодовой директорией (которую вы могли бы сделать, я полагаю, у меня нет подумал об этом достаточно, чтобы узнать, насколько это практично). –

Смежные вопросы