我用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 形象方面哪里出了问题?

推荐答案

this issue之后,看起来pyenv安装的是没有Python共享库的Python.

您应该try 添加以下内容:

  • reticulate::install_python(),其中包含pyenv和设置--enable-shared选项

Python相关问答推荐

Django关于UniqueBindition的更新

如何使用scikit-learn Python库中的Agglomerative集群算法以及集群中声明的对象数量?

使用Python OpenCV的文本检测分割

在Arrow上迭代的快速方法.Julia中包含3000万行和25列的表

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

通过交换 node 对链接列表进行 Select 排序

根据网格和相机参数渲染深度

优化在numpy数组中非零值周围创建缓冲区的函数的性能

返回nxon矩阵的diag元素,而不使用for循环

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何过滤包含2个指定子字符串的收件箱列名?

如何在solve()之后获得症状上的等式的值

我如何根据前一个连续数字改变一串数字?

cv2.matchTemplate函数匹配失败

如何在Python中找到线性依赖mod 2

如何在图中标记平均点?

Django—cte给出:QuerySet对象没有属性with_cte''''

在Python中计算连续天数

手动设置seborn/matplotlib散点图连续变量图例中显示的值