gpt4 book ai didi

python - 无法从 Makefile 激活 python venv 环境

转载 作者:行者123 更新时间:2023-12-04 10:26:14 24 4
gpt4 key购买 nike

我正在尝试使用 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()它自己的 shell (环境),因此您对一个 shell 实例所做的更改(通过获取脚本)不会影响下一个。你可以绕过这个问题,通过将多个配方命令连接成一行(转义换行符并用 ; 分隔命令)来只生成一个 shell:
    env:
    . ../env/bin/activate ; \
    SOME_COMMAND

    但这仍然只对作为该命令行一部分的命令有效。

    你可能会考虑在多个配方中做同样的事情,但实际上,如果你需要环境对 make 中发生的任何事情都处于事件状态,你可能只是想在调用 make 之前先激活它。

    关于python - 无法从 Makefile 激活 python venv 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60624942/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com