使用Python的rarfile模块解压RAR文件时持续报错的问题
解决rarfile库解压RAR文件时的
Unrar not installed错误 嘿,我之前也碰到过完全一样的问题!这个错误的根源其实很直白:rarfile Python库本身只是个封装层,它没办法独立完成RAR文件的解压工作,必须依赖系统里的unrar命令行工具才能正常运行。下面是一步步解决的具体办法:
你的问题回顾
你写的解压代码如下:
import rarfile epath='C:\Users\sidharth.m\Desktop\Rar\xyz.rar' def unrar(file): rf = rarfile.RarFile(file) rf.extractall() unrar(epath)
运行时抛出了这个错误:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\rarfile.py", line 2816, in custom_popen
raise RarCannotExec("Unrar not installed? (rarfile.UNRAR_TOOL=%r)" % UNRAR_TOOL)
rarfile.RarCannotExec: Unrar not installed? (rarfile.UNRAR_TOOL='unrar')
具体解决步骤
1. 先安装Unrar工具
- Windows系统:下载官方的Unrar工具(不用安装完整的WinRAR,单独的Unrar工具就够用),安装完成后记得把它的安装路径(比如
C:\Program Files\WinRAR)添加到系统的PATH环境变量里。 - Linux/macOS:直接用包管理器安装:
- Ubuntu/Debian:
sudo apt-get install unrar - macOS:
brew install unrar(需要先安装Homebrew)
- Ubuntu/Debian:
2. 修正你的代码
有两个细节需要调整:
- 路径字符串里的反斜杠会被当成转义字符,所以要加
r前缀变成原始字符串,或者用双反斜杠\\避免转义问题 - 如果没把Unrar加到系统环境变量,就在代码里手动指定它的路径
修正后的代码示例:
import rarfile # 若未将Unrar加入PATH,手动指定工具路径(以Windows为例) rarfile.UNRAR_TOOL = r"C:\Program Files\WinRAR\UnRAR.exe" # 用原始字符串避免路径转义问题 epath = r'C:\Users\sidharth.m\Desktop\Rar\xyz.rar' def unrar(file): rf = rarfile.RarFile(file) # 如需解压到指定路径,给extractall传目标路径参数,比如: # rf.extractall(r"C:\Users\sidharth.m\Desktop\MyExtractedFiles") rf.extractall() unrar(epath)
3. 验证是否生效
打开命令提示符(Windows)或终端(Linux/macOS),输入unrar,如果能看到一堆命令提示信息,说明Unrar已经能被系统正常识别,这时候再运行你的Python代码就可以正常解压了。
内容的提问来源于stack exchange,提问作者SalazarSid




