Windows下执行mlflow sagemaker build-and-push-container报FileNotFoundError
问题根因
你遇到的FileNotFoundError报错是Windows环境下执行mlflow容器构建的典型兼容问题,核心原因有3个:
- 未安装/未启动Docker Desktop:mlflow构建镜像需要调用docker可执行文件,系统找不到对应程序就会抛出该错误
- Unix命令兼容问题:日志中的
FIND: Parameter format not correct提示明确指向命令不兼容:mlflow的docker构建逻辑依赖Unix版本的find命令,而Windows系统自带的find命令语法完全不匹配,执行失败后会导致后续依赖的配置文件找不到 - 执行路径异常:你直接在模型制品目录执行构建命令,mlflow默认会读取当前目录下的环境配置文件,你提到当前目录下存在无后缀的python文件,会干扰mlflow的依赖解析逻辑,触发文件找不到异常
解决方案
按以下步骤操作即可解决:
- 安装并启动Docker Desktop for Windows,默认开启WSL2后端,安装完成后重启终端,执行
docker --version确认命令能正常返回版本信息,确保docker已加入系统环境变量 - 解决find命令兼容问题,二选一即可:
- 优先选择WSL2终端或者Git Bash执行mlflow命令,两个环境都自带兼容Unix的find命令
- 若要继续使用PowerShell/cmd,将Git安装目录下的
usr/bin路径加入系统PATH,且优先级调至高于C:\Windows\System32
- 调整命令执行逻辑:不要直接在模型制品目录执行构建,切换到你的Python项目根目录,执行命令时通过
--model-uri指定模型路径,示例如下:mlflow sagemaker build-and-push-container --model-uri ./mlruns/1/2877b0a860934a179723fd11ed946589/artifacts/random-forest-model - 校验AWS凭证配置:你用
setx配置的环境变量需要重启终端才能生效,重启后可执行aws sts get-caller-identity确认凭证配置正确,避免后续推送镜像到ECR时出现权限错误
内容的提问来源于stack exchange,提问作者Sanjay S G
相关产品推荐
相关产品推荐

