如何为基于 src 的 Python 存储库配置 pdm?

dav*_*one 5 python pyproject.toml python-pdm

我之前已经安排了一个没有src文件夹的 Python 存储库,并使用以下命令运行它:

pdm install --dev
pdm run mymodule
Run Code Online (Sandbox Code Playgroud)

我无法使用文件夹在存储库中复制该过程src。我该怎么做?

pyproject.toml

[project]
name = "mymodule"
version = "0.1.0"
description = "Minimal Python repository with a src layout."
requires-python = ">=3.10"

[build-system]
requires = ["pdm-pep517>=1.0.0"]
build-backend = "pdm.pep517.api"

[project.scripts]
mymodule = "cli:invoke"
Run Code Online (Sandbox Code Playgroud)

src/mymodule/__init__.py

空的文件。

src/mymodule/cli.py

def invoke():
    print("Hello world!")


if __name__ == "__main__":
    invoke()
Run Code Online (Sandbox Code Playgroud)

通过上面的配置,我可以pdm install --devpdm run mymodule失败了:

Traceback (most recent call last):
File "/home/user/Documents/mymodule/.venv/bin/mymodule", line 5, in <module>
    from cli import invoke
ModuleNotFoundError: No module named 'cli'
Run Code Online (Sandbox Code Playgroud)

dav*_*one 3

您需要按如下方式修改pyproject.toml :

[project.scripts]
mymodule = "mymodule.cli:invoke"
Run Code Online (Sandbox Code Playgroud)

为了更好地衡量,您可能需要在再次运行之前删除.venv文件夹和.pdm.toml文件pdm install --dev