使用Python-Magic库报错:无法找到有效magic文件及版本兼容问题
Python-Magic库报错解决指南:找不到魔法文件&版本不兼容问题
刚碰到过和你完全一样的坑,给你整理几个能快速解决的方案:
第一个问题:找不到有效魔法文件
这个错误是因为Windows平台下python-magic默认找不到识别文件类型所需的魔法文件(magic file),得手动指定,但指定后又碰到版本不兼容的问题,那咱们先解决版本匹配的核心问题。
核心解决方案:让python-magic和魔法文件版本匹配
你看到的File 5.32 supports only...错误,本质是你用的python-magic版本和GnuWin32里的5.32版魔法文件不兼容。解决办法有两种:
方案1:匹配版本安装python-magic
- 先卸载当前的python-magic:
pip uninstall python-magic -y - 安装和5.32版魔法文件兼容的python-magic版本,比如
0.4.15:pip install python-magic==0.4.15 - 然后正确指定魔法文件路径(注意Windows路径的转义,用原始字符串避免出错):
这里建议用import magic # 用原始字符串r''避免反斜杠转义问题 magic_obj = magic.Magic(magic_file=r'C:\Program Files (x86)\GnuWin32\share\misc\magic.mgc') filepath = r'path\somefile.txt' print(magic_obj.from_file(filepath))magic.mgc而不是magic,因为GnuWin32里编译好的二进制魔法文件是这个,加载速度更快也更稳定。
方案2:直接用python-magic-bin(最省心)
如果不想折腾版本匹配,直接换用python-magic-bin包——这个包已经内置了Windows所需的libmagic库和对应版本的魔法文件,完全不用手动指定路径:
- 先卸载原有的python-magic:
pip uninstall python-magic -y - 安装python-magic-bin:
pip install python-magic-bin - 然后直接运行你原来的代码就行,完全不用改:
import magic filepath = r'path\somefile.txt' print(magic.from_file(filepath))
我自己最后是用方案2解决的,省心又没再出问题,你可以试试!
内容的提问来源于stack exchange,提问作者MertTheGreat




