virtualenvwrapper меняет поведение cd и работает с mkproject
Я попытался изменить поведение cd по умолчанию с помощью virtualenvwrapper с помощью инструкций здесь: http://virtualenvwrapper.readthedocs.org/en/latest/tips.html
и поместив код в мою папку.virtualenvs и постактивировать и постдеактивировать файлы.
postactivate:
#!/bin/bash
# This hook is sourced after every virtualenv is activated.
cd () {
if (( $# == 0 ))
then
builtin cd $VIRTUAL_ENV
else
builtin cd "$@"
fi
}
cd
сообщение деактивировать:
#!/bin/bash
# This hook is sourced after every virtualenv is deactivated.
cd () {
builtin cd "$@"
}
Однако, похоже, он не работает должным образом, и теперь, когда я использую workon project
он не переходит автоматически в папку проекта, указанную в файле.project (что можно сделать с помощью mkproject
команда.
(Обратите внимание, если уместно, я использую zshell & prezto)
1 ответ
Рецепт, который вы опубликовали, не должен делать то, что вы ожидаете. Что он на самом деле делает, это то, что всякий раз, когда вы печатаете cd
без какого-либо пути в терминале он перемещается к корневому каталогу virtualenv вместо домашней папки.
Я бы порекомендовал вам настроить проекты virtualenvwrapper, чтобы вы могли отделить свою кодовую базу от virtualenv (вместо этого используйте файл требований для переносимости!). Т.е. добавить в свой файл оболочки
PROJECT_HOME='path/to/your/projects/folder'
Чтобы mkproject
создаст path/to/your/projects/folder/[PROJECT_NAME]
папка для вас и workon
автоматически перейдет в него.
Однако, если вы не хотите использовать проекты, вы должны изменить свой сценарий постактивации следующим образом, чтобы добиться того, чего вы хотите:
cd $VIRTUAL_ENV