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

按官方教程配置Pyre Check Pysa运行pyre analyze遇模块查找错误

问题解决步骤

1. 修正search_path配置

错误提示找不到标准库模块/内置函数,说明Pyre的搜索路径未正确包含标准库stubs或Python标准库目录。修改.pyre_configuration的search_path:

  • 移除无效的相对路径(比如../../../stubs/,若本地无此目录)
  • 添加Pyre自带的标准库stubs路径(虚拟环境下通常是~/.venvs/pysa/lib/python3.10/site-packages/pyre_check/stubs,注意替换为你实际使用的Python版本号)
  • 添加系统Python标准库路径,比如Ubuntu 22.04对应/usr/lib/python3.10/,Ubuntu 20.04对应/usr/lib/python3.8/

示例修正后的配置:

{
  "source_directories": [
    "."
  ],
  "taint_models_path": [
    "."
  ],
  "search_path": [
    "~/.venvs/pysa/lib/python3.10/site-packages/pyre_check/stubs",
    "/usr/lib/python3.10/",
    "~/.venvs/pysa/lib/python3.10/site-packages/"
  ],
  "exclude": [
    ".*/integration_test/.*"
  ]
}

2. 用pyre init自动生成配置(推荐)

手动配置路径容易出错,可通过Pyre自带命令生成适配当前环境的配置:

pyre init

初始化过程中会自动检测虚拟环境、Python版本并配置正确的搜索路径,之后再将taint_models_path添加到生成的.pyre_configuration中,确保指向你的sources_sinks.pysa所在目录。

3. 验证模型文件语法

确保sources_sinks.pysa中内置函数/模块的写法正确:

  • 内置函数eval的定义无需加模块前缀,示例:
    def eval(source: str) -> Any:
      ...
      Source[UserControlled]
    
  • subprocess.getoutput的定义保持原写法即可:
    def subprocess.getoutput(command: str) -> str:
      ...
      Sink[CommandExecution]
    

关于教程可用性

官方的Pyre Check Pysa教程是可用的,你遇到的问题属于环境路径配置的适配问题,不同Ubuntu版本的Python版本、虚拟环境路径存在差异,调整路径后即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:53:10