Makefile con comando fuente no funciona

Makefile con comando fuente no funciona

Tengo el siguiente Makefile

env:
    source venv/bin/activate

Cuando hago make envpara activar un entorno virtual de Python, aparece el siguiente error

fuente venv/bin/activate marca: fuente: No existe tal archivo o directorio marca: *** [env] Error 1

Pero cuando copio source venv/bin/activatey ejecuto en el shell, funciona bien. ¿Necesito configurar el directorio actual dentro del Makefile?

Respuesta1

sourcees uncarcasa incorporadacomando, no es un ejecutable que pueda iniciar desde cualquier lugar que no sea un shell. Lo sourceque hace es leer y ejecutar el contenido de un archivo.en el shell actual,sin iniciar un nuevo shell.

El propósito de esto es modificar el estado del shell actual (si solo lo hace sh venv/bin/activate, su shell también ejecutará el contenido del activatescript, pero luego terminará y saldrá).

Pero lo que quieres hacer esmodificar el estado de su makeprograma. Ejecutar el activatescript en un shell que genere, de cualquier manera make, no cambiará nada sobre el entorno que makeve.
Esto se debe a que cada programa (A) lanzado por otro programa (B) obtiene su propia copia del entorno del programa de lanzamiento (B), que (A) puede cambiar según lo desee, sin afectar el entorno del programa de lanzamiento ( B).

Entonces, lo que quieres hacer no puede funcionar, ni siquiera teóricamente.

Si necesita ejecutar algún Makefile dentro de un venv, primero deberá obtener el activatescript y luego iniciarlo desde el shell modificado make; no de la otra manera.

información relacionada