导入魔法抛出异常

时间:2014-08-13 14:38:15

标签: python exception import

所以我用pip下载filemagic:

E:\cuckoo-current\cuckoo>c:\Python27\Scripts\pip.exe install filemagic
Downloading/unpacking filemagic
  Downloading filemagic-1.6.tar.gz
  Running setup.py (path:c:\users\vaclav~1.vas\appdata\local\temp\pip_build_vaclav.vasenka\filemagic\setup.py) egg_info for package filemagic

Installing collected packages: filemagic
  Running setup.py install for filemagic

Successfully installed filemagic
Cleaning up...

我已创建包含内容的test.py:

import magic
print "test"

当我运行文件时,导入抛出异常:

Traceback (most recent call last):
  File "E:\sand\test.py", line 2, in <module>
    import magic
  File "C:\Python27\lib\site-packages\magic\__init__.py", line 18, in <module>
    from magic.identify import Magic, MagicError
  File "C:\Python27\lib\site-packages\magic\identify.py", line 16, in <module>
    from magic import api
  File "C:\Python27\lib\site-packages\magic\api.py", line 22, in <module>
    raise ImportError('Unable to find magic library')
ImportError: Unable to find magic library

filemagic是否已损坏?这个模块是否正常工作?

2 个答案:

答案 0 :(得分:3)

来自PYPI描述(强调我的)

  

libmagic的Python API, Unix 文件命令

背后的库

  

libmagic是通常支持文件命令的库    Unix 系统,Max OSX除外,它有自己的实现。该   library处理描述魔法的数据库文件的加载   用于标识各种文件类型的数字,以及相关的文件   哑剧类型。该库还处理字符集检测。

您无法在Windows上使用此功能。

您可以尝试使用标准库中的mimetypes模块(mimetypes.guess_type将是您要查看的内容。)

答案 1 :(得分:0)

我遇到了与 Alpine Linux映像

的docker容器相同的问题

似乎在Alpine Linux中,库搜索不起作用,因此无法找到魔法库(依赖文件和libmagic)工作所需的“libmagic.so.1”。

解决方法:

  1. 使用Python slim而不是Alpine Linux
  2. mime,mimetypes是可以使用的其他python库(这两个库的唯一缺点是,他们发现mime类型基于文件扩展名而不是文件头。