诗歌在同一环境中安装多个项目

tom*_*umb 5 python-poetry pyproject.toml

我正在尝试解决我认为是诗歌的常见问题,但无法找到相关文档。我的项目包含多个包,并使用 pyproject.toml 和诗歌来管理此结构的依赖关系

/pyproject.toml
/poetry.lock

/package1/pyproject.toml
/package1/poetry.lock
/package1/src/package1/...
Run Code Online (Sandbox Code Playgroud)

/package1/pyproject.toml包含 pypi 依赖项并将[tool.poetry.dependencies]可构建包定义为

packages = [
    { include = "package1", from = "./src" },
]
Run Code Online (Sandbox Code Playgroud)

/pyproject.toml参考文献package1

[tool.poetry.dependencies]
package1 = { path = "./package1", develop = true }
Run Code Online (Sandbox Code Playgroud)

最后,我的 Dockerfile 使用以下命令安装应用程序

WORKDIR /app/package1
RUN poetry install
WORKDIR /app
RUN poetry install
Run Code Online (Sandbox Code Playgroud)

问题在于,Poetry 将每个“项目”(由 pyproject.toml 文件标识)安装在单独的虚拟环境中,并且似乎不支持在同一环境中安装这两个项目。当我执行应用程序时,它可以找到package1但没有找到任何package1依赖项。

如何将所有内容安装在同一环境中?

我该如何处理这种情况?

小智 -2

您需要打包每个项目。使用poetry build。这将为您提供一个.whl文件,您可以将其提交到包存储库(如 PyPi 或 Gitlab 包存储库),例如使用 python package twine。如果不是 PyPi,则需要在 pyproject.toml 中提及包的来源。我不知道如何告诉诗歌从本地来源获取 .whl 包。但最终您拥有一个诗歌项目,然后将所有其他项目作为包安装(使用您创建的 .whl 文件)。