Главная > Unix-like, Администрирование > Virtualenvwrapper: Автоматический переход в папку с проектом.

Virtualenvwrapper: Автоматический переход в папку с проектом.

Есть такие тулзовины - virtualenv и virtualenvwrapper, которыми я достаточно активно пользуюсь, как и любой вменяемый питонаст. Так вот, я уже джва года жду такую фичу: чтобы когда активируешь виртуальное окружение, автоматом переходить в папку с репозиторием.

И даже знал как это сделать. Но лень была сильнее до сегодняшнего дня. Благо с именованием репозиториев и виртуальных окружений у меня проблем нет - имена совпадают (локально - по имени проекта и называется окружение, на хостинге - проекты я клонирую так, чтобы их папка соответствовала основному доменному имени, по которому проект будет доступен). Ну и проекты соответственно нигде не разбросаны, а все хранятся в одном месте (локально, например, в ~/repos).

Если у вас всё организованно плюс-минус так же, то остаётся написать только простенький postactivate hook. Открыаем в редакторе соответсвующий файл (vim $WORKON_HOME/postactivate) и дописываем в него всего одну строку:

cd ~/repos/`basename $VIRTUAL_ENV`

И теперь каждый раз, когда мы будем выполнять команды workon <venv name>, после активации нас автоматом перебросит в папку ~/repos/<venv name>.

Стоит отметить, что есть альтернативный подход, который вы можете найти в доках самого virtualenv'а - если вы храните своё виртуальное окружение в той же папке, что и сам проект (часто это бывает папка .venv), то можно подправить конфиги вашего shell'а и настроить автоматическую активацию окружения при переходе в папку и деактивацию соответственно при выходе из неё. Но мне это подходит в меньшей степени.

Update

Скриптик ниже позволит не переходить в корневую папку проекта, если workon выполняется и так внутри одной из поддиректорий проекта.

if [[ `pwd` != `echo ~`/repos/`basename $VIRTUAL_ENV`/* ]]; then
cd ~/repos/`basename $VIRTUAL_ENV` 2> /dev/null
fi
Пожалуйста, оцените полезность и качество данной статьи. Одна звезда - плохо, 5 - хорошо.
1/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.2/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.3/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.4/5.5/5. (1 голосов, средний: 5,00 из 5)
Загрузка...
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.