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

为何pip在Make命令中无法运行,在命令行却正常?

Makefile中pip别名不生效的解决办法

问题根源

Makefile默认使用/bin/sh(POSIX标准shell)执行命令,而非日常使用的zsh。zshrc里配置的alias pip="pip3"属于zsh的交互式专属配置,不会被非交互式的Makefile执行环境加载,所以别名在Makefile里无法生效。

可行解决方案

1. 直接替换为pip3

最直接的处理方式,修改Makefile中的命令,把pip直接换成pip3:

install-deps:
	pip3 install -r requirements.txt

2. 让Makefile用zsh加载配置

强制Makefile使用zsh并加载zshrc配置,先在Makefile开头指定shell,再用登录模式执行命令:

SHELL := /usr/bin/zsh

install-deps:
	zsh -lc "pip install -r requirements.txt"

-l参数让zsh以登录shell启动,会自动加载zshrc;-c用于执行后续命令。

3. 在Makefile中临时设置别名

不依赖zshrc,直接在命令里临时定义别名:

install-deps:
	alias pip=pip3; pip install -r requirements.txt

4. 系统级软链接(一劳永逸)

在系统目录创建pip指向pip3的软链接,这样所有环境下调用pip都会执行pip3:

sudo ln -s $(which pip3) /usr/local/bin/pip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:45:56