хуки virtualenvwrapper не загружаются автоматически

(По следам учебника Django по сборщику задач Марины Меле)

Virtualenv называется tb_test. В $VIRTUAL_ENV/bin/ (~/.virtualenvs/tb_test) я вставил файл постактивации из папки общих хуков в $WORKON_HOME и добавил 2 строки, так что теперь это выглядит так:

$VIRTUAL_ENV/bin/postactivate #!/bin/zsh # Этот хук вызывается после активации каждой виртуальной среды.

echo "hELo"
export DJANGO_SETTINGS_MODULE="taskbuster.settings.testing"

Однако при запуске workon tb_test активируется virtualenv, и все, кроме хука постактивации, не загружается. Нет эха "heLo" :-(


person Bella I.    schedule 25.06.2015    source источник


Ответы (2)


Работает на меня. Дважды проверьте, что вы используете workon для активации virtualenv (а не source bin/activate) и что вы действительно активируете правильную виртуальную среду.

Если это по-прежнему не работает, предоставьте дополнительную информацию о вашей среде (ОС, версии задействованных пакетов и т. д.). Изменяли ли вы какие-либо другие хуки virtualenv-wrapper?

Обновление: может быть, вы создали хук по неправильному пути? Если вы создаете virtualenv с помощью mkvirtualenv, он должен создать для вас файл postactivate в нужном месте, поэтому вам просто нужно его отредактировать. Он должен быть в этом месте:

~/.virtualenvs/tb_test/bin/postactivate

Чтобы уточнить: нет в ~/.virtualenvs/tb_test/postactivate

person René Fleschenberg    schedule 25.06.2015
comment
Да, используя workon на правильном виртуальном окружении... Я mkvirtualenv провел пару других тестовых виртуальных окружений, и ни у одного из них не было никаких хуков в $VIRTUAL_ENV/bin, ни postactivate, ни predeactivate... Так что это ненормально, я так понимаю? Вы случайно не знаете, почему? - person Bella I.; 25.06.2015
comment
AFAIK, это действительно ненормально. Какую версию virtualenv и virtualenv-wrapper вы используете? Какая ОС/дистрибутив? - person René Fleschenberg; 25.06.2015
comment
Mac OS X 10.9.5, virtualenv (12.0.7), virtualenvwrapper (4.3.2) - person Bella I.; 25.06.2015
comment
Я не Maccie, поэтому я не могу проверить это на последней системе OS X, извините. Я получаю крючки здесь на Linux. Я надеюсь, что кто-то еще может вмешаться и решить эту проблему. - person René Fleschenberg; 25.06.2015
comment
Оно делает! Правильный каталог — тот, что находится прямо над папкой /bin и прямо под .virtualenvs, верно? Спасибо за помощь... Я тоже на это надеюсь! - person Bella I.; 26.06.2015
comment
Я думаю, что решил это. Дайте мне знать, если совет перефразирования работает. - person villancikos; 19.04.2020

Я знаю, что прошло некоторое время с тех пор, как этот вопрос был опубликован, но теперь с Mac OS Catalina на большем количестве устройств ZSH используется в качестве оболочки по умолчанию.

Ну, у меня была такая же проблема, я не мог активировать переменные среды.

Работа заключалась в следовании советам здесь: Советы VirtualEnvWrapper

Там один из советов предлагает добавить команду rehash после выполнения echo $variables. и сделал трюк.

Вот мои файлы postactivate или preactivate на всякий случай:

### ~/.virtualenvs/MY_ENV/bin/post(pre)activate ###  
echo 'export DJANGO_SETTINGS_MODULE=MY_SETTINGS' >> ~/.zshenv
echo 'export SECRET_KEY=MY_SECRET' >> ~/.zshenv
echo rehash

То же самое для postdeactivate и/или predeactivate

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

person villancikos    schedule 18.04.2020