安装Python库后apt/apt-get无法使用,collections导入deque失败求助
问题:修改Python标准库文件导致无法导入deque且apt命令失效
跟着教程用Python和uvicorn构建REST API,安装pyrebase后运行uvicorn时出现from collections import deque导入失败的问题。自行修改了/usr/lib/python3.10/collections/__init__.py中的内容(比如将collections.abc改为_collections_abc这类操作),不仅原问题未解决,现在执行apt/apt-get的安装、卸载、清除等所有操作时,都会触发如下报错:
Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module> from urllib.request import urlopen File "/usr/lib/python3.10/urllib/request.py", line 88, in <module> import http.client File "/usr/lib/python3.10/http/client.py", line 71, in <module> import email.parser File "/usr/lib/python3.10/email/parser.py", line 12, in <module> from email.feedparser import FeedParser, BytesFeedParser File "/usr/lib/python3.10/email/feedparser.py", line 28, in <module> from collections import deque ImportError: cannot import name 'deque' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
解决建议
- 优先修复损坏的
/usr/lib/python3.10/collections/__init__.py文件:- 获取同版本(Python3.10)标准库中该文件的正确内容,用sudo权限覆盖本地损坏的文件。可以从其他安装了Python3.10的正常机器上复制,或者从Python官方源码仓库中提取对应版本的文件内容
- 修复后先验证基础功能:执行
python3 -c "from collections import deque; print(deque)",无报错则说明标准库修复成功
- 修复系统Python后,处理API项目的依赖问题:
- 使用虚拟环境隔离项目依赖,避免污染系统Python。执行以下命令创建并激活虚拟环境:
python3 -m venv myapi_env source myapi_env/bin/activate - 在虚拟环境内重新安装uvicorn和pyrebase,再运行项目
- 使用虚拟环境隔离项目依赖,避免污染系统Python。执行以下命令创建并激活虚拟环境:
- 如果系统Python损坏严重,上述方法无效:
- 手动下载Python3.10的deb安装包,使用
dpkg -i python3.10_xxx.deb命令重新安装修复,该操作无需依赖apt联网
- 手动下载Python3.10的deb安装包,使用
内容的提问来源于stack exchange,提问作者luis_castro
相关产品推荐
相关产品推荐

