在之前的工作中,我使用了“reticulate”包来在R中运行Autogluon自动机器学习库。该代码在我的当前配置(Ubuntu 20.4,R 4.10,reticulate v.125)下运行良好。
然而,在Docker中,这段代码无法运行。
然而,在Docker中,这段代码无法运行。
Dockerfile
FROM rocker/r-ver:4.1.0
## Install R packages
RUN R -q -e 'install.packages("remotes")'
RUN R -q -e 'remotes::install_github("rstudio/reticulate")'
# Install Autogluon
RUN R -q -e 'reticulate::install_miniconda()'
RUN R -q -e 'reticulate::conda_create(envname = "r-autogluon", packages = c("python=3.8.13", "numpy"))'
# RUN R -q -e 'reticulate::conda_list()'
RUN R -q -e 'reticulate::conda_install(envname = "r-autogluon", packages = "autogluon", pip = TRUE)'
RUN R -e 'reticulate::use_condaenv("r-autogluon", required = TRUE)'
# RUN -q -e 'reticulate::py_config()'
EXPOSE 3838
CMD R -e 'reticulate::import("autogluon.tabular")'
# Run in shell
# sudo docker build --no-cache -t demo .
# sudo docker run --rm -p 3838:3838 demo
我遇到了这个错误,但不知道该如何解决!
reticulate::import("autogluon.tabular") Error in py_module_import(module, convert = convert) : ModuleNotFoundError: No module named 'autogluon' Calls: -> py_module_import Execution halted
跟踪记录
- 'conda_list()'指示已成功创建“r-autogluon”!
- 'py_config()'指示默认使用“r-reticulate”。
- 'reticulate::use_condaenv("r-autogluon", required = TRUE)'无法工作。
有人有解决方案吗?
use_condaenv
后,reticulate 仍无法正确识别 Python 的版本,而我不得不使用use_python('/path/to/miniconda/envs/r-autogluon/bin/python')
来指定,尽管这可能应该在py_config()
中显现出问题。 - PhJ