Folding@Home 控制程序名为FAHControl
(从这里下载的) 不会启动并出现以下 Python 错误:
$ FAHControl
Traceback (most recent call last):
File "/usr/bin/FAHControl", line 25, in <module>
from fah import FAHControl, load_fahcontrol_db
File "/usr/lib/python3/dist-packages/fah/__init__.py", line 25, in <module>
from . import util
File "/usr/lib/python3/dist-packages/fah/util/__init__.py", line 24, in <module>
from .OrderedDict import *
File "/usr/lib/python3/dist-packages/fah/util/OrderedDict.py", line 23, in <module>
from collections import MutableMapping as DictMixin
ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
我使用的是 Linux Mint 21.3 Cinnamon(基于 Ubuntu 22.04)。有解决办法吗?
答案1
发生了什么以及何时
3.10+ Python 版本似乎有变化。但解决方案实际上很简单,如果你不关心历史课,跳转到下面的解决方案。
collections.abc
或者容器的抽象基类是 3.3 版本中的新增功能,以前,该模块是 模块的一部分collections
。在同一手册的 3.9 版本中,我找到了有关它何时被弃用以及何时被删除以便程序员必须调整其代码的信息:
自版本 3.3 起已弃用,将在版本 3.10 中删除:将集合抽象基类移至 collections.abc 模块。为了向后兼容,它们在 Python 3.9 中继续在此模块中可见。
简单的解决方案
只需使用您最喜欢的文本编辑器以 root 身份编辑以下文件:
/usr/lib/python3/dist-packages/fah/util/OrderedDict.py
更改第 23 行:
由此
from collections import MutableMapping as DictMixin
对此
from collections.abc import MutableMapping as DictMixin
保存并重试。
FAHControl
现在在我这边启动。该解决方案已经过全面测试并且可以运行(至少在我的系统上)。
FAHControl 和 FAHClient 工作的一些屏幕截图(http://127.0.0.1:7396/):
FAHControl(点击放大):
FAHClient(点击放大):