poetry 如何知道我的包位于 src 文件夹中?

问题描述 投票:0回答:3

我有一个简单的问题。

我曾经用我的包在根目录下创建一个诗歌项目。

project.toml
mypackage
  +- __init__.py
  +- mypackage.py
  +- test_mypackage.py

我最近将测试移动到另一个目录中,因此该文件夹现在看起来像这样。

project.toml
src
  +- mypackage
      +- __init__.py
      +- mypackage.py
tests
  +- test_mypackage.py

诗歌没有任何改变,当我制作

poetry build
时仍然可以正常工作。它如何搜索包根文件夹?它是否会搜索包名称为
project.toml
的文件夹?

感谢您的帮助。

python testing python-poetry
3个回答
15
投票

拥有一个名为

src
的文件夹来包含包代码只是一个预定义的标准,
poetry
无需告知即可识别。它通过项目文件中的
packages
部分工作,默认情况下扫描
mypackage
src/mypackage
。如果您提供自己的值,它将停止自动检测这两个值。

参见 HHest 的回答,了解诗歌 1.6.1+


10
投票

从 Poetry 版本 1.6.1 开始,pyproject.toml 中的以下规范有效

[tool.poetry]
packages = [{include = "mypackage", from="src"}]

3
投票

对于任何将源模块直接包含在

src
目录中、没有
my_package
目录并且您希望导入看起来像这样的地方的人

from my_module import foo 
from utils import bar 
from constants import FOOBAR

而不是

from src.my_module import foo
from src.utils import bar
from src.constants import FOOBAR

您可以在 pyproject 文件中执行以下操作:

packages = [{include = "*", from="src"}]
© www.soinside.com 2019 - 2024. All rights reserved.