r - 使用Docker安装rpy2找不到R路径

标签 r django docker dockerfile rpy2

使用 Docker 的 Django 应用程序需要安装 rpy2 作为依赖项。虽然我安装了 r-base 容器并将其指定为依赖项,但在安装 django 要求时我不断收到:

Collecting rpy2==2.8.3 (from -r /requirements/base.txt (line 55))
  Downloading rpy2-2.8.3.tar.gz (186kB)
    Complete output from command python setup.py egg_info:
    Error: Tried to guess R's HOME but no command 'R' in the PATH.

如何在 Docker 内部指定 R 路径在哪里?

我的 server.yml 如下所示:

version: '2'
services:

  r:
    build: ./services/r

  django:
    build:
      context: ./myproject/
      dockerfile: ./compose/django/Dockerfile
    env_file:
      - .env
      - .env-server
    environment:
      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_USER}
    depends_on:
      - postgres
      - r
    command: /gunicorn.sh
    volumes:
      - ./myproject:/app

django 的 Dockerfile 是:

FROM python:2.7
ENV PYTHONUNBUFFERED 1

COPY ./requirements /requirements

RUN pip install -r /requirements/production.txt \
    && pip install -r /requirements/test.txt \
    && groupadd -r django \
    && useradd -r -g django django

COPY . /app
RUN chown -R django /app

COPY ./compose/django/gunicorn.sh /gunicorn.sh
COPY ./compose/django/entrypoint.sh /entrypoint.sh
RUN sed -i 's/\r//' /entrypoint.sh \
    && sed -i 's/\r//' /gunicorn.sh \
    && chmod +x /entrypoint.sh \
    && chown django /entrypoint.sh \
    && chmod +x /gunicorn.sh \
    && chown django /gunicorn.sh

WORKDIR /app

ENTRYPOINT ["/entrypoint.sh"]

R 的 Dockerfile 是:

FROM r-base

最佳答案

在 django 容器中安装 r 会更容易。因此,删除 r 容器并修改 django docker 文件添加以下行,有效:

RUN apt-get --force-yes update \
    && apt-get --assume-yes install r-base-core

关于r - 使用Docker安装rpy2找不到R路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40630853/

相关文章:

r - 在 R 中压平数据框中的列表列

r - 从 NAMESPACE 访问 S3methods 的正确方法

docker - 如何从Docker Hub容器busybox停止Docker进程?

docker 运算符(operator)不生成任何日志

docker - 从Docker拉出时的问题

r - 避免与 dplyr::case_when 发生类型冲突

r - 如何在 R 中创建缩略图?

python - 从 Django FileField 的响应中添加 zip 文件

django - 在 Django 中使用附件异步发送电子邮件

python - django 自定义表单 clean() 从 clean_field() 引发错误