如何在 pyproject.toml 中正确包含路径依赖?

How can I correctly include a path dependency in pyproject.toml?

我有 2 个项目结构如下:

/abc-lib
  / abc
    / __init__.py
    / main.py
  / pyproject.toml


/abc-web-api
  / src
    / __init__.py
    / main.py
  / pyproject.toml

我试图将 abc-lib 作为依赖项包含在 abc-web-api 中,因此 abc-web-api/pyproject.toml 如下所示:

[tool.poetry]
name = "abc-web-api"
version = "0.0.1"
description = "Some description."
authors = ["Someone <someone@example.com>"]
repository = "https://github.com/someone/abc-web-api"
readme = "README.md"


[tool.poetry.scripts]
serve = "src.main:app"


[tool.poetry.dependencies]
python = "~3.6.8"
abc-lib = { path="../abc-lib" }


[tool.poetry.dev-dependencies]
pytest = "^3.10.1"
yapf = "^0.30.0"
flake8 = "^3.8.3"


[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

当我执行 poetry install 时,我收到以下消息:

Package operations: 1 installs, 0 updates, 0 removals

  - Installing abc-lib (1.0.0 ../abc-lib)

[ModuleOrPackageNotFound]
No file/folder found for package abc-lib

“正在安装”语句中显示的版本号是正确的,所以我对[ModuleOrPackageNotFound]的含义感到很困惑。

有人知道我该如何解决吗?谢谢

要在项目文件夹之外安装文件夹,您必须设置系统路径

import sys
sys.path.insert(1,'/path/to/directory')

您的文件夹结构看起来有点奇怪。看起来您更喜欢“src”变体。所以我建议如下:

./
├── abc-lib
│   ├── pyproject.toml
│   └── src
│       └── abc_lib
│           ├── __init__.py
│           └── main.py
└── abc-web-api
    ├── pyproject.toml
    └── src
        └── abc_web_api
            ├── __init__.py
            └── main.py

abc-lib中使用这个pyproject.toml

[tool.poetry]
name = "abc-lib"
version = "0.1.0"
description = ""
authors = ["Someone <someone@example.com>"]


[tool.poetry.dependencies]
python = "^3.6"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.masonry.api"

abc-web-api中的这个:

[tool.poetry]
name = "abc-web-api"
version = "0.1.0"
description = ""
authors = ["Someone <someone@example.com>"]


[tool.poetry.dependencies]
python = "^3.6"
abc-lib = {path = "../abc-lib"}

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.masonry.api"