簡體   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