Python调用DeepSpeech代码终端正常但XAMPP服务器返回255错误如何解决
解决方案
Windows环境下XAMPP运行对应脚本返回状态码255,是Apache运行上下文与本地终端环境不一致导致的,可按以下步骤排查修复:
- 修正subprocess调用写法:
subprocess.getstatusoutput()仅支持传入字符串格式的命令,当前传入参数列表会被解析为单个命令名,直接触发找不到命令的错误。建议更换为兼容性更好的subprocess.run()方法,同时补全deepspeech.exe的绝对路径(本地终端可执行是因为当前用户PATH环境变量包含了deepspeech的安装目录,Apache服务默认使用的系统账户没有对应环境变量配置),参考代码如下:
import subprocess # 替换为本地deepspeech.exe的实际绝对路径,可在终端执行where deepspeech获取路径 deepspeech_path = r"C:\Users\你的用户名\AppData\Local\Programs\Python\Python版本号\Scripts\deepspeech.exe" cmd_list = [ deepspeech_path, '--model', r'C:\deepspeech\deepspeech-0.6.0-models\output_graph.pb', '--lm', r'C:\deepspeech\deepspeech-0.6.0-models\lm.binary', '--trie', r'C:\deepspeech\deepspeech-0.6.0-models\trie', '--audio', r'C:\deepspeech\audio\8455-210777-0068.wav' ] # 捕获全量输出方便排查 run_res = subprocess.run(cmd_list, capture_output=True, text=True, encoding='utf-8') with open("transcribe_text.txt", "a", encoding='utf-8') as f: f.write(f"状态码:{run_res.returncode}\n转写结果:{run_res.stdout}\n错误信息:{run_res.stderr}\n")
- 调整目录与服务权限:
- 给
C:\deepspeech全目录、Python脚本所在目录、transcribe_text.txt文件,新增Users用户组的读取、执行、写入权限 - 也可直接修改Apache服务的运行账户为本地登录的Windows账户:打开系统服务列表→找到XAMPP对应的Apache服务→右键属性→「登录」选项卡→选择「此账户」→填写Windows用户名和密码→重启Apache服务即可和本地终端运行环境保持一致
- 给
- 修正Python调用路径:如果是通过PHP等web层脚本调用Python代码,不要直接写
python 脚本名.py,需要补全本地Python解释器的绝对路径,比如C:\Python38\python.exe C:\web\脚本路径\transcribe.py
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

