4

在 Python 中构建一个简单的项目以使用 Visual Studio Code 进行开发,我遇到的麻烦比我想承认的要多。

我应该如何在我的文件系统中构建一个包含几个模块的简单 Python 包的项目?只是一堆 *.py 文件在一起。我的要求是:

  1. 我必须能够在 vscode 中逐步调试它。
  2. 它有一堆使用 pytest 的单元测试。
  3. 我可以选择从 vscode 选项卡中调试特定测试,它必须在断点处停止。
  4. pylint 不得显示任何误报。
  5. 测试文件必须位于主模块文件的不同目录中。
  6. 我必须能够从控制台运行所有测试。
  7. 该模块使用 python 标准库模块 venv 在虚拟环境中执行
  8. 代码将使用类型提示

我可能会使用另一个 linter,甚至另一个测试框架。

没什么特别的,但我真的很难把它做好。我想知道:

  • 我应该如何组织我的子目录:一个包含主文件的文件夹和一个包含测试的同级文件夹?还是包含代码的子文件夹和包含测试的子文件夹?
  • 哪些目录必须有一个init .py 文件?
  • 测试应该如何从模块中导入文件?我应该使用相对进口吗?
  • 我应该创建一个pytest.ini文件吗?
  • 我应该创建一个.env文件吗?
  • launch.json在 vscode 中的调试器文件配置的内容是什么?
4

1 回答 1

1

常用目录结构:

  • app
    • __init__.py
    • yourappcode.py
  • tests(pytest 寻找这个)
    • __init__.py
    • test_yourunittests.py
  • server.py如果你有一个
  • .env
  • .coveragerc
  • README.md
  • Pipfile
  • .gitignore
  • pyproject.toml如果你想
  • .vscode(有帮助)
    • launch.json
    • settings.json

或者你可以做得更好。忽略我的结构,看看一些著名的python项目github页面。像fastAPI、Flask、asgi、aiohttp这些都是我现在能想到的

还:

  • 我认为与相对进口相比,绝对进口更容易使用,但我可能是错的
  • vscode 能够使用 pytest。确保你有一个测试扩展。Vscode 有一个内置的,我很确定。您可以将其配置为 pytest 并指定您的测试目录。您还可以从命令行运行测试。如果你在根目录,只要运行 'pytest' 将识别你的测试目录,如果它被默认命名。我认为,您的实际测试文件也需要以前缀 test_ 开头。
  • launch.json 不需要有什么特别的。当您单击调试面板中播放按钮旁边的设置按钮时。Vscode 会询问它是什么类型的应用程序。即,如果它是一个烧瓶应用程序,请选择 python 然后选择烧瓶,它将自动生成一个设置文件,您可以随意调整该设置文件以使您的应用程序运行。即,也许您想公开不同的端口或运行您的应用程序的命令不同
  • 在我看来,您只需要花一点时间来配置 vscode 以满足您的特定 python 需求。例如,您可以以任何您想要的方式使用 virtualenv 和 linting。您只需要在您指定设置的存储库中的 .vscode 文件夹中有一个 settings.json 文件。可以在网上找到指定 python virtualenv 和 linting 方法的配置
于 2022-03-03T06:56:02.050 回答