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

本地执行graph命令正常,远程SSH执行出现AttributeError错误求助

问题分析与解决方法

这个报错的核心矛盾很清晰,我来帮你拆解:

为什么会出现这个错误?

你看到的AttributeError: 'file' object has no attribute 'buffer'是Python 2和Python 3对标准输入(stdin)的处理差异导致的:

  • 在Python 3中,sys.stdin是文本流对象,必须通过.buffer属性才能读取二进制原始数据;
  • 但在你使用的Python 2.7里,sys.stdin本身就是二进制模式的文件对象,根本没有.buffer这个属性。

而本地执行正常、远程SSH执行报错的关键是:远程执行时,graph命令意外触发了「读取标准输入」的分支——本地执行时因为正确识别了输入文件路径,所以根本没走到这个逻辑里。


解决方法

方法一:先确保远程命令能正确找到输入文件

远程执行时,很可能因为工作目录差异,导致graph命令找不到shared/feed.csv,从而 fallback 到读取stdin。你可以试试这两个小调整:

  1. 使用绝对路径指定文件,彻底避免工作目录的影响:
    ssh -i /etc/dropbear/dropbear_rsa_host_key pi@192.168.1.37 graph /home/pi/shared/feed.csv -y 9,10 --ylabel Temp --title CabinTemp --figsize 1600x1000 --output /home/pi/shared/zzzz07.png
    
  2. 显式指定工作目录,在命令前加上目录切换:
    ssh -i /etc/dropbear/dropbear_rsa_host_key pi@192.168.1.37 "cd /home/pi && graph shared/feed.csv -y 9,10 --ylabel Temp --title CabinTemp --figsize 1600x1000 --output shared/zzzz07.png"
    

方法二:修复graph_cli的Python 2兼容性问题

如果路径没问题,但还是触发了读stdin的逻辑,那就要修改graph_cli的代码来兼容Python 2.7:

  1. 打开报错的文件:/usr/local/lib/python2.7/dist-packages/graph_cli/graph.py
  2. 找到read_chain函数里的data = stdin.buffer.read()这一行,替换成兼容Python 2/3的代码:
    import sys
    if sys.version_info >= (3, 0):
        data = sys.stdin.buffer.read()
    else:
        data = sys.stdin.read()
    
  3. 保存文件后,重新执行远程SSH命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:17:33