首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlflow R安装MLFLOW_PYTHON_BIN

mlflow R安装MLFLOW_PYTHON_BIN
EN

Stack Overflow用户
提问于 2020-03-11 17:17:32
回答 2查看 1.2K关注 0票数 5

我试图在R和im中安装mlflow,得到以下错误消息:

mlflow::install_mlflow() mlflow_conda_bin()中的错误:找不到conda二进制文件。安娜康达安装好了吗?如果不使用conda,则可以将环境变量MLFLOW_PYTHON_BIN设置为您的path可执行文件的路径。

我试过以下几种方法

代码语言:javascript
复制
export MLFLOW_PYTHON_BIN="/usr/bin/python" 
source ~/.bashrc
echo $MLFLOW_PYTHON_BIN  -> this prints the /usr/bin/python.

或者在R,

代码语言:javascript
复制
sys.setenv(MLFLOW_PYTHON_BIN="/usr/bin/python")
sys.getenv() -> prints MLFLOW_PYTHON_BIN is set to /usr/bin/python.

但是,它仍然不起作用。

我不想使用conda环境。

如何克服这个错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-18 18:03:05

install_mlflow命令现在只适用于conda,很抱歉出现了令人困惑的消息。你可以:

  • 安装conda --这是安装和使用mlflow的推荐方法。

  • 通过pip自己安装mlflow python包

为了自己安装mlflow,pip安装正确(与R包匹配) python版本的mlflow,并设置MLFLOW_PYTHON_BIN环境变量和MLFLOW_BIN evn变量。

代码语言:javascript
复制
library(mlflow)
system(paste("pip install -U mlflow==", mlflow:::mlflow_version(), sep=""))
Sys.setenv(MLFLOW_BIN=system("which mlflow"))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python"))
票数 3
EN

Stack Overflow用户

发布于 2021-10-11 20:29:34

刚刚碰到这个问题,@Tomas所接受的回答非常有用。我在上面添加了一条评论,但是对于一些额外的上下文,如果任何其他用户试图在Databricks上使用MLflow包的话,我想要创建一个更彻底的响应。

Databricks MLflow快速启动指南将告诉您您需要运行以下代码:

代码语言:javascript
复制
library(mlflow)
install_mlflow()

但是,对于Enterprise用户来说,如果集群没有外部连接权限(很可能没有),并且无法连接到Anaconda来下载必要的包,那么install_mlflow()函数就会失败。您可能会遇到这样的错误:

代码语言:javascript
复制
CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://conda.anaconda.org/conda-forge/linux-64/current_repodata.js

好消息是,应该已经在Databricks运行时上安装了MLflow。因此,您可以引用该安装,然后如@Tomas所述,使用它为MLFLOW_BINMLFLOW_PYTHON_BIN设置R环境变量。从那里开始,R MLflow API按照指定的方式工作(在我的经验中,但是ymmv)。

以上解决方案的唯一缺点是,当您在R中使用system()函数时,需要设置intern=TRUE 为了捕获命令的输出system()函数的默认行为是intern=FALSE。因此,如果您没有显式设置intern=TRUE,那么退出代码0将从您的system()调用(或者在错误时可能是另一个退出代码)返回,而Sys.setenv()将将环境变量设置为0!

代码语言:javascript
复制
### intern=True missing ###
Sys.setenv(MLFLOW_BIN=system("which mlflow"))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python"))

示例输出(可以看到环境变量没有正确设置):

代码语言:javascript
复制
s <- Sys.getenv()  
s[grep("MLFLOW", names(s))]
  
MLFLOW_BIN              0
MLFLOW_CONDA_HOME       /databricks/conda
MLFLOW_PYTHON_BIN       0
MLFLOW_PYTHON_EXECUTABLE
                        /databricks/python/bin/python
MLFLOW_TRACKING_URI     databricks

但是,当intern=TRUE时,您将得到正确的环境变量:

代码语言:javascript
复制
### intern=True set ###
Sys.setenv(MLFLOW_BIN=system("which mlflow", intern=TRUE))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python", intern=TRUE))

示例输出:

代码语言:javascript
复制
s <- Sys.getenv()
s[grep("MLFLOW", names(s))]

MLFLOW_BIN              /databricks/python3/bin/mlflow
MLFLOW_CONDA_HOME       /databricks/conda
MLFLOW_PYTHON_BIN       /databricks/python3/bin/python
MLFLOW_PYTHON_EXECUTABLE
                        /databricks/python/bin/python
MLFLOW_TRACKING_URI     databricks

注意:这是使用Databricks运行时9.1LTS ML。这在其他Databricks运行时配置上可能有效,也可能不起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60641337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档