我试图在R和im中安装mlflow,得到以下错误消息:
mlflow::install_mlflow() mlflow_conda_bin()中的错误:找不到conda二进制文件。安娜康达安装好了吗?如果不使用conda,则可以将环境变量MLFLOW_PYTHON_BIN设置为您的path可执行文件的路径。
我试过以下几种方法
export MLFLOW_PYTHON_BIN="/usr/bin/python"
source ~/.bashrc
echo $MLFLOW_PYTHON_BIN -> this prints the /usr/bin/python.或者在R,
sys.setenv(MLFLOW_PYTHON_BIN="/usr/bin/python")
sys.getenv() -> prints MLFLOW_PYTHON_BIN is set to /usr/bin/python.但是,它仍然不起作用。
我不想使用conda环境。
如何克服这个错误?
发布于 2020-03-18 18:03:05
install_mlflow命令现在只适用于conda,很抱歉出现了令人困惑的消息。你可以:
或
为了自己安装mlflow,pip安装正确(与R包匹配) python版本的mlflow,并设置MLFLOW_PYTHON_BIN环境变量和MLFLOW_BIN evn变量。
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"))发布于 2021-10-11 20:29:34
刚刚碰到这个问题,@Tomas所接受的回答非常有用。我在上面添加了一条评论,但是对于一些额外的上下文,如果任何其他用户试图在Databricks上使用MLflow包的话,我想要创建一个更彻底的响应。
Databricks MLflow快速启动指南将告诉您您需要运行以下代码:
library(mlflow)
install_mlflow()但是,对于Enterprise用户来说,如果集群没有外部连接权限(很可能没有),并且无法连接到Anaconda来下载必要的包,那么install_mlflow()函数就会失败。您可能会遇到这样的错误:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://conda.anaconda.org/conda-forge/linux-64/current_repodata.js好消息是,应该已经在Databricks运行时上安装了MLflow。因此,您可以引用该安装,然后如@Tomas所述,使用它为MLFLOW_BIN和MLFLOW_PYTHON_BIN设置R环境变量。从那里开始,R MLflow API按照指定的方式工作(在我的经验中,但是ymmv)。
以上解决方案的唯一缺点是,当您在R中使用system()函数时,需要设置intern=TRUE 为了捕获命令的输出。system()函数的默认行为是intern=FALSE。因此,如果您没有显式设置intern=TRUE,那么退出代码0将从您的system()调用(或者在错误时可能是另一个退出代码)返回,而Sys.setenv()将将环境变量设置为0!
### intern=True missing ###
Sys.setenv(MLFLOW_BIN=system("which mlflow"))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python"))示例输出(可以看到环境变量没有正确设置):
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时,您将得到正确的环境变量:
### intern=True set ###
Sys.setenv(MLFLOW_BIN=system("which mlflow", intern=TRUE))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python", intern=TRUE))示例输出:
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运行时配置上可能有效,也可能不起作用。
https://stackoverflow.com/questions/60641337
复制相似问题