我正在尝试使用Makefile命令激活我的虚拟环境,但是在下面运行时出现错误。
命令
make env
错误
Makefile:20: warning: overriding commands for target `make'
Makefile:17: warning: ignoring old commands for target `make'
source ../env/bin/activate
make: source: No such file or directory
make: *** [env] Error 1
制作文件
...
env:
source ../env/bin/activate
source ../env/bin/activate
有效。我想知道我不了解的Makefile是否有一些特别之处,这会导致失败吗?
答案 0 :(得分:1)
这有更多的层次,您可能会发现下一步,但是一次。食谱是在shell中执行的,更具体而言,我默认情况下也认为Square
不能理解/bin/sh
,因此...将source
更改为:>
Makefile
或定义make env:
. ../env/bin/activate
变量来表示SHELL
,它将看起来很有效:
/bin/bash
但是,接下来的事情...食谱行确实SHELL := /bin/bash
env:
source ../env/bin/activate
拥有自己的外壳(环境),因此您对一个外壳实例(通过提供脚本)所做的更改不会影响下一个外壳实例。您可以解决这个问题,并通过将多个配方命令连接为实际一行来生成一个外壳(转义换行符,并使用fork()
分隔命令,而不是:
;
但是,这仅对作为该命令行一部分的命令仍然有效。
您可能会考虑在多个配方中执行相同的操作,但是实际上,如果您需要使环境对于Make中发生的任何事情都处于活动状态,则可能只想在调用make之前先将其激活。