为什么使用点“.”从 setup.py 安装 `install_requires` requirements.txt 在 Dockerfile 中失败?
Why does installing `install_requires` from setup.py using a dot "." in the requirements.txt fail in Dockerfile?
我正在尝试使用描述的方法here
Docker 文件
FROM python:3.8
COPY requirements.txt setup.py /tmp/
RUN pip3 install -r /tmp/requirements.txt \
&& rm /tmp/*
这失败了:
Step 1/7 : FROM python:3.8
---> 79cc46abd78d
Step 2/7 : COPY requirements.txt setup.py /tmp/
---> Using cache
---> a50a0a8ecb06
Step 3/7 : RUN pip3 install -r /tmp/requirements.txt && rm /tmp/*
---> Running in c7d29bd8f23c
ERROR: Directory '.' is not installable. Neither 'setup.py' nor 'pyproject.toml'
found.
我也试过注释掉RUN
命令,进入容器和运行
pip3 install -r /tmp/requirements.txt
手动。这工作没有错误。
我不知道这里可能是什么问题。
我想通了:
点 .
不是相对于 requirements.txt
而是相对于当前工作目录。它在我手动执行时起作用的原因是,我还将我的工作区安装到一个 devcontainer 中,并将我的工作目录放在该工作区中,其中还包含 setup.py
因此解决方案是做这样的事情:
WORKDIR /tmp
COPY requirements.txt setup.py ./
RUN pip3 install -r requirements.txt \
&& rm /tmp/*
我正在尝试使用描述的方法here
Docker 文件
FROM python:3.8
COPY requirements.txt setup.py /tmp/
RUN pip3 install -r /tmp/requirements.txt \
&& rm /tmp/*
这失败了:
Step 1/7 : FROM python:3.8
---> 79cc46abd78d
Step 2/7 : COPY requirements.txt setup.py /tmp/
---> Using cache
---> a50a0a8ecb06
Step 3/7 : RUN pip3 install -r /tmp/requirements.txt && rm /tmp/*
---> Running in c7d29bd8f23c
ERROR: Directory '.' is not installable. Neither 'setup.py' nor 'pyproject.toml'
found.
我也试过注释掉RUN
命令,进入容器和运行
pip3 install -r /tmp/requirements.txt
手动。这工作没有错误。
我不知道这里可能是什么问题。
我想通了:
点 .
不是相对于 requirements.txt
而是相对于当前工作目录。它在我手动执行时起作用的原因是,我还将我的工作区安装到一个 devcontainer 中,并将我的工作目录放在该工作区中,其中还包含 setup.py
因此解决方案是做这样的事情:
WORKDIR /tmp
COPY requirements.txt setup.py ./
RUN pip3 install -r requirements.txt \
&& rm /tmp/*