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

容器内Python脚本通过Makefile传参执行后出现Make规则错误

解决Makefile传递额外参数后报错的问题

当你执行make deploy server project时,Python脚本能正常运行,但之后出现make: *** No rule to make target 'server'. Stop.错误,原因是make会把命令行中所有非目标的参数也当作要构建的目标。执行完deploy规则后,它会尝试寻找server和project对应的构建规则,找不到就报错。

下面是两种可行的解决方法:

方法一:添加通用空规则

在Makefile中添加一个匹配任意目标的空规则,让make忽略找不到规则的参数:

.PHONY: deploy %

deploy:
    @docker exec -it ecosystem python3 deployment/deploy.py $(filter-out $@,$(MAKECMDGOALS))

# 匹配所有无规则的目标,执行true命令(无操作且返回成功)
%:
    @true

这样修改后,直接执行make deploy server project即可,make会在跑完deploy后,用这个通用规则处理server和project,不会报错。

方法二:用--分隔目标与参数

修改执行命令,用--明确区分make的目标和要传递给脚本的参数:

make deploy -- server project

同时调整Makefile中的参数过滤逻辑,去掉--这个分隔符:

.PHONY: deploy

deploy:
    @docker exec -it ecosystem python3 deployment/deploy.py $(filter-out $@ --,$(MAKECMDGOALS))

这种方式更清晰,明确告诉make哪些是目标,哪些是传递给脚本的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:45:04