繁体   English   中英

无法从 Makefile 激活 python venv 环境

[英]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
  • 环境存在于 Makefile 目录的上一级目录。
  • 其他 Makefile 命令有效。
  • 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM