[英]Can't activate python venv environment from Makefile
我正在尝试使用 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 是否有什么特别的地方我不明白导致它失败?
这还有更多层次,您可能会发现自己正在进行下一步,但一次一个。 食谱是在 shell 中执行的,更具体地说,默认情况下,我也认为在我们的情况下, /bin/sh
不理解source
,所以...将您的Makefile
更改为:
env:
. ../env/bin/activate
或者定义 make SHELL
变量来表示/bin/bash
,它似乎可以工作:
SHELL := /bin/bash
env:
source ../env/bin/activate
但是,接下来......配方的行会fork()
它自己的外壳(环境),因此您对一个外壳实例所做的更改(通过获取脚本)不会影响下一个。 你可以绕过这个问题,通过将多个 recipes 命令连接成一行(转义换行符并用;
分隔命令)来只生成一个 shell:
env:
. ../env/bin/activate ; \
SOME_COMMAND
但这仍然只对作为该命令行一部分的命令有效。
你可能会考虑在多个配方中做同样的事情,但实际上,如果你需要环境对 make 中发生的任何事情都处于活动状态,你可能只是想在调用 make 之前先激活它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.