< Back to blog list

修复thefuck中No module named 'imp'问题

在Python3.12+版本安装运行the-fuck会遇到问题:ModuleNotFoundError: No module named 'imp'

wavesman@wavesman-Surface-Pro:~$ fuck
Traceback (most recent call last):
  File "/home/wavesman/.local/bin/fuck", line 5, in <module>
    from thefuck.entrypoints.not_configured import main
  File "/home/wavesman/.local/lib/python3.12/site-packages/thefuck/entrypoints/not_configured.py", line 13, in <module>
    from .. import logs, const  # noqa: E402
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wavesman/.local/lib/python3.12/site-packages/thefuck/logs.py", line 8, in <module>
    from .conf import settings
  File "/home/wavesman/.local/lib/python3.12/site-packages/thefuck/conf.py", line 1, in <module>
    from imp import load_source
ModuleNotFoundError: No module named 'imp'

本篇文章中将会对进行修复

问题分析:

出现该问题是由于Python 从 3.12 版本开始移除了 imp 模块。详情请参考:Python3文档:imp

解决办法

  1. 首先根据你的the-fuck安装方式卸载它,例如:
# pip
pip uninstall thefuck 
# ubuntu & Debian
sudo apt remove thefuck
  1. 前往仓库:DL9090/the-fuck/ipm-bug-fix
  2. 克隆/下载此仓库
  3. 解压为文件夹,在文件夹所在路径运行pip install ./<文件夹名>,例如我的为pip install thefuck-imp-bug-fix 一般来说这个时候关闭终端或运行source ~./.bashrc(该命令不同系统不同,参考the-fuck|Readme)重新打开再运行fuck就正常了

参考内容:

#1491 #1497

< Back to blog list

<BLOG>

</BLOG>