无法从Makefile激活python venv环境

时间:2020-03-10 19:49:37

标签: python makefile python-venv

我正在尝试使用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
  • 环境在包含Makefile的目录上方存在一个目录。
  • 其他Makefile命令起作用。
  • 命令行上的
  • source ../env/bin/activate有效。

我想知道我不了解的Makefile是否有一些特别之处,这会导致失败吗?

1 个答案:

答案 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之前先将其激活。