我用Dockerfile创建了一个基于rocker/shinyverse
的Docker镜像:
# File: Dockerfile
FROM rocker/shiny-verse:4.2.2
RUN echo "apt-get start"
RUN apt-get update && apt-get install -y \
python3 \
python3-pip
# install R packages
RUN R -e "install.packages('remotes')"
RUN R -e "install.packages('reticulate')"
RUN R -e "install.packages('tidyverse')"
# Install Python packages datetime and zeep
RUN python3 -m pip install datetime zeep
# Set the environment variable to use Python3
ENV RETICULATE_PYTHON /usr/bin/python3
然后我有一个简单的R文件:
library("tidyverse")
library(reticulate)
# Call a simple Python command to calculate 3*5
py_run_string("z = 3+4")
py$z %>% print()
在我启动容器之后,我想用shell 命令运行这个R脚本:
docker exec shiny_new Rscript /home/shiny/ETL/reticulate_test.R
但我得到以下错误:
Error: Python shared library not found, Python bindings not loaded.
Use reticulate::install_miniconda() if you'd like to install a Miniconda Python environment.
Execution halted
在执行python时失败.
我不确定如何设置Python,以使我可以在R脚本中通过reticulate
使用Python代码.有没有人知道我在建立docker 形象方面哪里出了问题?