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

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

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

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

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

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

Update

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

 

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: