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

Snowboy与Python:测试demo.py时Bash路径错误如何修正?

嘿,我之前也碰到过类似的问题,本质就是脚本运行时的工作目录和文件实际所在的目录不匹配,导致程序找不到目标文件。下面给你几个实用的解决办法,你可以根据自己的场景选择:

方法一:切换到文件所在目录再运行脚本

如果你的demo.py和snowboy.udml本来就在同一个文件夹里,最简单的方式就是先通过cd命令切换到这个目录,再执行脚本。比如假设这两个文件都在~/my-snowboy-files路径下:

cd ~/my-snowboy-files
python demo.py

这样脚本运行时的工作目录就是文件所在的目录,自然能顺利找到snowboy.udml。

方法二:在Python脚本里使用绝对路径加载文件

如果你不想每次都切换目录,可以直接修改demo.py中加载文件的代码,把相对路径换成文件的绝对路径。比如原来的代码可能是这样:

detector = snowboydecoder.HotwordDetector("snowboy.udml", sensitivity=0.5)

你把它改成绝对路径(记得替换成你实际的文件路径):

detector = snowboydecoder.HotwordDetector("/home/your-name/my-snowboy-files/snowboy.udml", sensitivity=0.5)

这样不管你在哪个目录运行脚本,程序都能精准定位到文件。

方法三:运行脚本时传入文件的绝对路径参数

如果不想修改脚本代码,还可以给脚本加个路径参数,运行时直接传入snowboy.udml的绝对路径。首先修改demo.py让它支持接收参数:

import sys
from snowboydecoder import HotwordDetector

if __name__ == "__main__":
    # 如果传入了参数就用参数里的路径,否则用默认的相对路径
    udml_file = sys.argv[1] if len(sys.argv) > 1 else "snowboy.udml"
    detector = HotwordDetector(udml_file, sensitivity=0.5)
    # 后续的业务代码...

然后运行脚本时直接带上绝对路径:

python demo.py /home/your-name/my-snowboy-files/snowboy.udml
方法四:用环境变量统一管理文件路径(适合多脚本共享场景)

如果有多个脚本都需要用到这个udml文件,可以把路径存到环境变量里,让脚本读取环境变量来定位文件。首先在Bash里设置临时环境变量:

export SNOWBOY_UDML="/home/your-name/my-snowboy-files/snowboy.udml"

然后修改demo.py读取这个环境变量:

import os
from snowboydecoder import HotwordDetector

# 读取环境变量,如果没找到就用默认的相对路径
udml_path = os.getenv("SNOWBOY_UDML", "snowboy.udml")
detector = HotwordDetector(udml_path, sensitivity=0.5)

如果想让这个环境变量永久生效,可以把export那一行添加到~/.bashrc或者~/.bash_profile文件里,这样每次打开终端都会自动加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:27:07