Как активировать virtualenv с помощью make-файла? - PullRequest
0 голосов
/ 18 мая 2018

В верхней части моего make-файла у меня есть строка:

SHELL := /bin/sh

, которая необходима для большинства команд.Тем не менее, я хотел бы также иметь команду make для активации моего виртуального env, который находится по другому пути.

Вот код, который я написал для него:

activate:
    source ~/.envs/$(APP)/bin/activate; \

проблема в том, что это просто печатает то, что здесь написано, и не выполняется.Я читал, что он может что-то сделать, только bash знает об источнике, но я не могу понять, как временно переключать режимы в команде activate.

Как мне написать этот метод, так чточто это активирует мой virtualenv?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Создайте файл с именем «make-venv», например:

#!/bin/bash
source ./.venv/bin/activate
$2

Затем добавьте это в первую строку вашего Makefile

SHELL=./make-venv

Теперь make-venv активируется virtualenv перед выполнением каждой команды.Возможно, неэффективно, но функционально.

0 голосов
/ 18 мая 2018

Это выполняется.

Virtualenv работает, изменяя среду вашего текущего процесса (вот почему вы должны его "найти").Однако один процесс не может изменить среду другого процесса.Итак, чтобы запустить ваш рецепт, make вызывает оболочку и передает ей вашу команду virtualenv, она работает, затем оболочка закрывается, и ваш virtualenv исчезает.

Короче говоря, в make-файле нет простого способа сделать это.,Самое простое, что можно сделать, - это создать скрипт, который сначала отправляет исходный код virtualenv, а затем запускает make, и запускает его вместо запуска make.

...