使用 Poetry 创建的 Python 项目:如何在 Visual Studio Code 中调试它?

Ser*_*ban 15 python visual-studio-code vscode-debugger python-poetry

我有一个根据基本 Poetry说明创建的 Python 项目。

项目文件夹是这样的:

my-project
+----my_project
|    +-- my_project.py
|    +-- File1.py
|    +-- File2.py
|
+----pyproject.toml
Run Code Online (Sandbox Code Playgroud)

如何将内容从一个文件导入到另一个文件的示例:my_project.py我有代码

from . import File1, File2
Run Code Online (Sandbox Code Playgroud)

如果我想从 VSCode 调试它,如果我尝试F5在 中my_project.py,我会收到错误:

Exception has occurred: ImportError
attempted relative import with no known parent package
Run Code Online (Sandbox Code Playgroud)

但是,如果我不像上面那样表达导入,则无法使用该poetry命令运行它。

pyproject.toml文件中,我有这个:

[tool.poetry.scripts]
my-project = "my_project.my_project:run"
Run Code Online (Sandbox Code Playgroud)

run是文件中的入口点方法my_project.py

要从命令提示符运行项目,我转到项目文件夹(包文件夹所在的位置)并输入poetry run my-project

再说一次,到目前为止,一切都根据Poetry 文档

问题如何在 VSCode 中调试这个项目?

我知道我需要创建一个launch.json文件,但我不知道配置应该是什么样子......

谢谢。

Lau*_*ent 13

对于Visual Studio Code,您可以尝试以下操作:

  • __init__.py在子目录中添加文件my_project
  • .vscode目录中添加一个lauch.json包含以下内容的文件:
{
    "version": "0.1.0",
    "configurations": [
        {
            "name": "my-project",
            "type": "python",
            "request": "launch",
            "cwd": "${workspaceFolder}",
            "module": "my_project",
            "args": []
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这里,cwd指向您的工作区文件夹,该文件夹应该是my-project. 然后您应该能够成功运行Run and DebugVisual Studio Code 的模块。

至于Poetry,尝试pyproject.toml像这样修改你的(似乎有一个拼写错误,连字符与下划线):

[tool.poetry.scripts]
my-project = "my-project.my_project:run"
Run Code Online (Sandbox Code Playgroud)

并确保my-project在运行时将 的父目录设置为当前工作目录poetry run my-project

请参阅这篇文章以获取更多指导。

  • 空的 `__init__.py` 文件告诉 python 它所在的文件夹是一个包。这将使您的导入引用正常工作。如果需要的话,你还可以将 python 代码放入 `__init__.py` 中。如果有人从包中导入(即以“__init__.py”的父文件夹命名),该代码就会被执行。这些文件是管理导入包时确切导入内容的一种方法。通常不需要。 (2认同)