在我的生成文件的顶部,我有这一行:
SHELL := /bin/sh
大多数命令都需要它。但是,我还想有一个 make 命令来激活我的虚拟环境,它位于不同的路径上。
这是我为它编写的代码:
activate:
source ~/.envs/$(APP)/bin/activate; \
问题是,这只是打印出这里写的内容,并没有被执行。我读到它可能与只有 bash 知道源代码有关,但我不知道如何在
activate
中临时切换模式。命令。我必须如何编写此方法才能激活我的 virtualenv?
最佳答案
它确实被执行了。
Virtualenv 通过修改您当前进程的环境来工作(这就是您必须“获取”它的原因)。但是,一个进程不能修改另一个进程的环境。所以,要运行你的配方,make 调用一个 shell 并将你的 virtualenv 命令传递给它,它工作,然后 shell 退出,你的 virtualenv 消失了。
简而言之,在 makefile 中没有简单的方法可以做到这一点。最简单的做法是创建一个脚本,首先获取 virtualenv,然后运行 make,然后运行它而不是运行 make。
关于makefile - 如何使用makefile激活virtualenv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409515/