出于多种原因,我不想将我的单个包存储在
src
文件夹中,所以我曾经选择平面布局项目结构(位于项目根目录中的包文件夹)。有一个名为 foo
的模块,我只想使用 pyproject.toml
发现这个模块。我正在使用最新的setuptools==65.5.0
和Cpython 3.11
。那么如何使用此设置实现平面布局包发现?
这里是
pyproject.toml
[build-system]
requires = ["setuptools >= 65.5.0"]
build-backend = "setuptools.build_meta"
[project]
name = "foo"
authors = [
#TODO add authors
]
description = "desc"
readme = "README.md"
requires-python = ">=3.11"
keywords = ["keywords"]
license = {text = "MIT"}
classifiers = [
#TODO add classifiers
]
dependencies = [
# some deps
]
[project.optional-dependencies]
dev = [
#TODO add optional dependencies
]
[project.gui-scripts]
foo = "foo:launch"
和
PROJECT_ROOT/foo/__init__.py
import sys
from .app import App
app = None
def launch(argv: list[str] = []):
app = App(argv)
return app.exec()
if __name__ == "__main__":
launch(sys.argv)
据我所知,setuptools会自动找到
foo
包并将其打包到您问题中显示的项目目录中。如果您想跳过自动行为并想对其进行明确说明,那么我认为您需要将以下部分添加到您的 pyproject.toml
文件中:
[tool.setuptools.packages.find]
include = ["foo*"]
namespace = False # this is probably the default and can be skipped