如何结合curl与pip直接安装远程requirements.txt的Python依赖
可行性结论
完全可以实现不将requirements.txt保存到本地磁盘,直接通过管道传递远程文件内容给pip完成依赖安装。执行curl http://my-requirements.txt.example.com | pip install -r时提示-r option requires 1 argument,是因为pip install -r参数必须显式指定输入源,未给-r传入对应路径参数就会触发该报错。
正确实现命令
类Unix系统(Linux、macOS)可指定标准输入设备路径作为-r的参数,直接接收curl传递的管道内容:
curl http://my-requirements.txt.example.com | pip install -r /dev/stdin
跨平台兼容写法(同时支持Windows、Linux、macOS)可以用-作为标准输入的占位符,无需依赖系统设备路径:
curl http://my-requirements.txt.example.com | pip install -r -
实用补充
- 若远程文件地址存在301/302跳转,需给curl加上
-L参数让其跟随跳转,否则拿到的是跳转响应内容而非真正的requirements.txt文件内容,示例:curl -L http://my-requirements.txt.example.com | pip install -r - - 安全提示:该安装方式仅适用于完全可信的远程源,若远程requirements.txt被篡改,会直接在当前环境安装恶意依赖包,生产环境请谨慎使用。
- 若远程文件存放在私有服务需要鉴权,直接给curl添加对应鉴权参数(如自定义请求头、cookie参数)即可,不影响管道内容传递逻辑。
内容的提问来源于stack exchange,提问作者Athena Wisdom
相关产品推荐
相关产品推荐

