在Databricks使用mlflow.pyfunc模型code_path遇Errno 95问题求助
解决方案
1. 精准指定需打包的代码目录/排除Notebook文件
MLflow打包code_path时会遍历目录下所有文件,Databricks的Notebook(.ipynb/.dbc格式)因DBFS的特殊存储特性,会触发不支持的文件操作。可以:
- 仅指定src下的纯Python模块子目录,而非整个src:
mlflow.pyfunc.log_model( artifact_path="model", python_model=your_model, code_path=["PROJECT_ROOT/src/utils", "PROJECT_ROOT/src/models"] )
- 若使用MLflow 1.26及以上版本,直接通过
exclude参数跳过Notebook文件:
mlflow.pyfunc.log_model( artifact_path="model", python_model=your_model, code_path=["PROJECT_ROOT/src"], exclude=["*.ipynb", "*.dbc"] )
2. 分离代码与Notebook的存储路径
将核心Python代码移至DBFS的常规存储目录(而非Notebook工作区目录),避免虚拟存储文件的操作限制:
- 用Databricks CLI导出代码到常规路径:
databricks workspace export_dir /Workspace/your-project/src dbfs:/tmp/your-project/src
- 日志模型时指向该常规路径:
mlflow.pyfunc.log_model( artifact_path="model", python_model=your_model, code_path=["dbfs:/tmp/your-project/src"] )
3. 利用软链接隔离纯代码目录
在项目根目录创建软链接,指向src下不含Notebook的子目录,以此作为code_path的目标:
- 在Databricks终端执行链接命令:
ln -s PROJECT_ROOT/src/pure-modules PROJECT_ROOT/src-code-only
- 日志模型时使用该链接目录:
mlflow.pyfunc.log_model( artifact_path="model", python_model=your_model, code_path=["PROJECT_ROOT/src-code-only"] )
内容的提问来源于stack exchange,提问作者perfects
相关产品推荐
相关产品推荐

