从 pyproject.toml 安装依赖项,但不安装包

obk*_*obk 10 python pip docker python-packaging pyproject.toml

我有一个 python 包,我想将其安装在 docker 文件中。

pyproject.toml 看起来像:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "bar"
dependencies = [
    "pandas",
]

[project.optional-dependencies]
foo = [
    "matplotlib",
]
Run Code Online (Sandbox Code Playgroud)

...和 ​​Dockerfile:

# ...
WORKDIR /app
COPY . /app
RUN pip install /app
Run Code Online (Sandbox Code Playgroud)

这会在每个构建上安装依赖项(在本例中为pandas),我希望避免这种情况,以节省开发人员的时间,因为 pyproject.toml 很少被触及。

如何仅安装pandas(列出 pyproject.toml 的依赖项)而无需COPY .安装bar.

我想避免:

  • 采用诗歌等其他工具
  • 创建一个requirements.txt并dynamic在pyproject.toml中使用关键字,因为我已经optional-dependencies并且希望将依赖项列表尽可能靠近(即同一文件)。

就像是:

# ...
WORKDIR /app
COPY ./pyproject.toml /app/
RUN pip install --requirements-from /app/pyproject.toml  # <-- HERE
COPY . /app
RUN pip install /app  # <-- Installs `bar` only. All dependencies already installed.
Run Code Online (Sandbox Code Playgroud)