You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整Python包与模块结构以适配pytest及VS Code环境

问题背景

当前目录结构:

memsim/
   __init__.py
   utils.py

   tests/
      __init__.py
      utils_test.py

utils.py中定义函数:

def flatten_free_segments(free_segments):

utils_test.py的导入语句:

from utils import flatten_free_segments

测试执行结果:

$ python -m unittest discover --> 未找到测试用例
$ python -m unittest tests/utils_test.py --> 执行正常

同时VS Code的Pylance工具出现导入报错,调试环节也存在问题。

用户咨询两个问题:

  1. 该基础目录结构及导入语句是否合法且为正确方式?
  2. 如何让Pylance和VS Code测试运行器适配当前设置?

问题1:目录结构与导入语句的合法性

当前的导入方式不合法,也不符合Python工程化的标准做法,原因如下:

  • 执行python -m unittest discover时,Python会从当前工作目录开始扫描测试用例,但tests/utils_test.py里的from utils import...会默认在tests/目录下查找utils.py,而非上层目录的文件,导致导入逻辑混乱,这也是discover找不到测试用例的核心原因。
  • 直接跨目录使用from utils import...属于不规范的导入写法,在Python包结构中,跨目录导入应该使用绝对导入或正确的相对导入。

正确的调整方式:

  • 把memsim作为顶层可导入包,在utils_test.py中改用绝对导入:
    from memsim.utils import flatten_free_segments
    
  • 或者使用相对导入(仅适用于包内部的模块间导入):
    from ..utils import flatten_free_segments
    
  • 之后在memsim/的父目录下执行python -m unittest discover,就能正常识别测试用例。

问题2:适配Pylance与VS Code测试运行器

解决Pylance导入报错

  1. 确认Python解释器路径:通过VS Code左下角的Python解释器选择器,选中当前项目使用的Python环境,确保环境能识别memsim包。
  2. 添加额外路径配置:
    • 在memsim/的父目录下创建pyproject.toml,添加:
      [tool.pyright]
      extraPaths = ["."]
      
    • 或者直接在VS Code工作区的settings.json中添加:
      {
          "python.analysis.extraPaths": ["${workspaceFolder}"]
      }
      
    以上配置会让Pylance把当前工作目录(memsim的父目录)加入Python路径,从而正确识别memsim包。

适配VS Code测试运行器

  1. 配置测试发现规则:在VS Code的settings.json中添加如下配置,指定测试目录和匹配规则:
    {
        "python.testing.unittestArgs": [
            "-v",
            "-s",
            "./memsim/tests",
            "-p",
            "*test.py"
        ],
        "python.testing.pytestEnabled": false,
        "python.testing.unittestEnabled": true
    }
    
  2. 设置正确的工作目录:将VS Code的工作区设置为memsim的父目录,确保测试运行器能识别memsim包,避免导入报错。

内容的提问来源于stack exchange,提问作者pitosalas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:52:28