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

PyBuilder项目执行pyb -v报错No module named 'src'如何解决

问题原因

  • PyBuilder运行单元测试时默认会将src/main/python(生产代码根目录)、src/unittest/python(测试代码根目录)加入Python的模块搜索路径,你在测试代码中写的from src.main.python.amass import amass导入路径多了冗余前缀,运行时找不到src模块。
  • IntelliJ运行测试时会自动将项目根目录、配置好的源码目录加入Python搜索路径,同时可能自动修正了导入路径映射,所以可以正常运行。
  • 手动执行测试时报No module named 'rest_tests'是因为你的测试文件名为my_tests.py,对应的模块名是my_tests不是rest_tests,属于模块名传错。
  • 注意检查你项目中__init__.py的拼写,你给出的结构里存在_init__.py、__init.py__这类拼写错误,会导致Python无法正常识别目录为Python包。

解决方案

  1. 修改测试文件导入语句
    将my_tests.py中的导入代码替换为:
from amass import amass

PyBuilder运行时会自动搜索src/main/python下的包,不需要带src.main.python前缀。

  1. 补全build.py配置
    在initialize函数中添加生产代码目录的显式配置,避免PyBuilder默认路径识别异常:
@init
def initialize(project):
    # 原有配置保留,新增下面这行
    project.set_property('dir_source_main_python', 'src/main/python')
    # 其他原有配置不变
  1. 修正手动执行测试的命令
    在项目根目录执行以下命令,先配置Python搜索路径,再执行测试:
# 临时将源码目录和测试目录加入Python搜索路径
export PYTHONPATH=./src/main/python:./src/unittest/python
# 注意模块名是my_tests不是rest_tests
python -m unittest my_tests.MyTestCase.test_subdomains_finding_amass
  1. 修正所有__init__.py的拼写错误
    把项目中所有拼写错误的包文件修正为标准的__init__.py,确保Python能正常识别包结构。

配置完成后重新执行pyb -v即可正常运行单元测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:00