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

使用Curses的Python脚本nettop.py在macOS运行失败求助

解决macOS下运行psutil nettop.py脚本的报错问题

我之前在macOS上跑这个脚本也踩过类似的坑,结合报错信息(卡在bytes_recv的计算环节),大概率是macOS与Linux的psutil网络统计兼容性差异,或是老版本psutil的适配缺陷导致的,给你几个落地的解决思路:

1. 优先升级psutil到兼容Python3.6的最新版本

Python3.6.4属于比较老旧的版本,早期psutil对macOS的进程网络统计支持不完善。你可以安装适配Python3.6的最后一个psutil版本(5.9.5,因为5.9.6开始不再支持Python3.6):

pip install psutil==5.9.5

升级后再运行脚本,大部分情况下这个报错会直接消失——新版本psutil修复了不少macOS下的进程网络数据获取问题。

2. 修复脚本中的空值/属性缺失判断

如果升级后还是报错,那大概率是脚本没有处理macOS下部分进程无网络统计数据的情况(Linux上几乎所有进程都能返回网络统计,但macOS上部分系统进程会返回None)。

找到nettop.py第138行左右,把原来的计算代码改成下面的逻辑,先判断数据是否有效:

# 替换原有的recv计算代码
recv_bytes = 0
# 先确认stats_before和stats_after不为空,且存在bytes_recv属性
if stats_before and hasattr(stats_before, 'bytes_recv') and stats_after and hasattr(stats_after, 'bytes_recv'):
    recv_bytes = stats_after.bytes_recv - stats_before.bytes_recv
recv = f"{recv_bytes}/s"

同理,发送字节数(bytes_sent)的计算也需要做同样的判断,避免触发同类报错。

3. 验证本地psutil的进程网络统计能力

可以先在终端运行下面的代码,确认macOS下psutil能否正常获取进程网络数据:

python -c "import psutil; p = psutil.Process(); print(p.net_io_counters())"

如果输出是None,说明当前进程没有网络活动数据,这也印证了脚本需要处理空值的必要性;如果输出包含bytes_recv和bytes_sent字段,那升级psutil应该就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:19:38