You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile执行make activate报错:source: No such file or directory

问题原因与解决方法

核心问题

Makefile默认使用/bin/sh作为执行shell,而source是Bash专属的内置命令。部分系统(比如Debian/Ubuntu)的/bin/sh指向dash,dash不支持source命令,这就是执行make activate报错的原因。你直接在终端执行时用的是Bash,所以能正常运行。

解决方案

方案1:指定Makefile使用Bash执行

在Makefile的最顶部添加一行,强制使用Bash作为命令执行的shell:

SHELL := /bin/bash

之后再执行make activate就能正常识别source命令。

方案2:使用POSIX标准的.命令替代source

source的POSIX兼容等价命令是.,把Makefile里的source env/bin/activate替换为:

. env/bin/activate

这个写法在sh和Bash环境下都能正常工作,兼容性更强。

额外注意

Makefile的每一行命令都会在独立的子shell中执行,所以就算你在Makefile里激活了虚拟环境,后续行的命令并不会继承这个环境,而且也不会改变当前终端的环境。如果需要激活环境后执行一系列命令,要把它们放在同一行(用&&分隔),或者用反斜杠换行保持在同一个子shell里:

activate-run:
    . env/bin/activate && python your_script.py && pytest tests/

如果你的需求是让当前终端进入虚拟环境,Makefile无法做到(子shell的环境不会传递到父shell),这种情况建议直接在终端执行source env/bin/activate。

内容的提问来源于stack exchange,提问作者strblr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:58:15