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

Locust脚本本地运行正常,GitHub运行时出现ModuleNotFoundError

解决Locust脚本在GitHub运行时的ModuleNotFoundError问题

本地运行Locust脚本一切正常,但在GitHub环境执行时出现如下报错:

"/opt/venv/bin/locust", line 8, in <module>
sys.exit(main())
File "/opt/venv/lib/python3.10/site-packages/locust/main.py", line 75, in main
docstring, _user_classes, shape_class = load_locustfile(_locustfile)
File "/opt/venv/lib/python3.10/site-packages/locust/util/load_locustfile.py", line 58, in load_locustfile
imported = source.load_module()
File "<frozen importlib._bootstrap_external>", line 548, in _check_name_wrapper
File "<frozen importlib._bootstrap_external>", line 1063, in load_module
File "<frozen importlib._bootstrap_external>", line 888, in load_module
File "<frozen importlib._bootstrap>", line 290, in _load_module_shim
File "<frozen importlib._bootstrap>", line 719, in _load
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/mnt/locust/main.py", line 17, in <module>
from process_handler.TaskExecutor import TaskRunner
ModuleNotFoundError: No module named 'process_handler'

这是因为GitHub环境的Python模块搜索路径和本地不一致,导致无法识别自定义的process_handler模块,可通过以下方法解决:

  • 规范项目包结构
    确保process_handler是合法的Python包,目录下必须包含__init__.py文件(空文件即可),项目结构示例:

    你的项目目录/
    ├── main.py
    └── process_handler/
        ├── __init__.py
        └── TaskExecutor.py
    
  • 手动添加项目根目录到Python路径
    在main.py的开头添加以下代码,把项目根目录加入Python的模块搜索路径:

    import sys
    from pathlib import Path
    
    # 获取当前脚本所在的项目根目录
    project_root = Path(__file__).parent
    # 添加到Python路径
    sys.path.append(str(project_root))
    
  • 确认GitHub Actions的工作目录
    在GitHub的workflow配置文件中,执行Locust命令前要切换到正确的项目目录,示例:

    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
    
      - name: 运行Locust
        working-directory: ./你的项目根目录名  # 替换成实际的项目目录
        run: locust -f main.py
    
  • 改用相对导入(可选)
    如果项目结构固定,可把main.py中的导入语句改成相对导入:

    from .process_handler.TaskExecutor import TaskRunner
    

    注意这种方式需要确保main.py被当作包的一部分执行,或者运行Locust时指定正确的模块路径。

内容的提问来源于stack exchange,提问作者Badam Gurava Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:41:10