Python3.10运行Shadowsocks报错:collections无MutableMapping属性
解决Python 3.10下Shadowsocks启动报错:AttributeError: module 'collections' has no attribute 'MutableMapping'
问题原因
Python 3.10开始,collections模块中的MutableMapping等抽象基类被移至collections.abc子模块,而你当前使用的Shadowsocks版本未适配这一变更,导致启动时无法找到collections.MutableMapping。
解决方案
方案1:修改Shadowsocks源码快速修复
- 打开报错的
lru_cache.py文件:sudo nano /usr/local/lib/python3.10/dist-packages/shadowsocks/lru_cache.py - 在文件开头添加导入语句:
from collections.abc import MutableMapping - 找到第34行的类定义,将
collections.MutableMapping替换为MutableMapping:class LRUCache(MutableMapping): - 保存退出(nano中按
Ctrl+O回车确认,再按Ctrl+X),重新启动服务:sudo ssserver -c /etc/shadowsocks.json
方案2:安装适配Python 3.10的Shadowsocks分支
原版Shadowsocks已停止维护,推荐安装更稳定的更新分支:
sudo apt update && sudo apt install shadowsocks-libev
安装完成后用新版命令启动:
sudo ss-server -c /etc/shadowsocks.json
方案3:降级Python版本(不推荐)
若不想修改源码或更换版本,可将Python降级至3.9及以下(3.9及更早版本中collections仍保留MutableMapping别名),但此操作可能影响系统其他依赖,需谨慎执行。
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

