Arquivos ausentes para a biblioteca `magic` no Windows
Eu preciso obter tipo mime para alguns arquivos no windows, então eu instaleipython-magic
(em python 2.7.3 de 32 bits).
Depende do unixmagic
biblioteca.
Autor instrui para obterregex2.dll
, zlib1.dll
emagic1.dll
do projeto gnuwin32. Então salvei os arquivos em uma pasta e adicionei a pasta ao meu sistemaPATH
.
Agora quando eu executomagic
métodos, recebo exceção de arquivo ausente:
import magic
print(magic.Magic())
Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/lex/lex.py", line 367, in <module>
test_magic()
File "C:/Users/Admin/PycharmProjects/lex/lex.py", line 364, in test_magic
print(magic.Magic())
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 52, in __init__
magic_load(self.cookie, magic_file)
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 188, in magic_load
return _magic_load(cookie, coerce_filename(filename))
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 139, in errorcheck
raise MagicException(err)
magic.MagicException: could not find any magic files!
DLLs estão no PATH, tentei depurar emagic1.dll
está localizado corretamente, mas em algum lugar dentro da biblioteca lança uma exceção.
Dentro degnuwin32
pacote que encontreimagic
emagic.mgc
. Eu os coloquei na mesma pasta e pegueiWindowsError: [Error 126]
em
libmagic = None
# Let's try to find magic or magic1
dll = ctypes.util.find_library('magic') or ctypes.util.find_library('magic1')
# This is necessary because find_library returns None if it doesn't find the library
if dll:
libmagic = ctypes.CDLL(dll)
Isso obviamente acontece porque o python tenta abrirmagic
arquivo como dll, que é texto simples. Depois de adicionar.dll
para nomes de arquivos no código eu recebo o mesmomagic.MagicException: could not find any magic files!
.
Quais arquivos estão faltando?
ATUALIZAR:
C:\Users\Admin>file C:\123.zip -m magic
file: could not find any magic files!
C:\Users\Admin>file C:\123.zip -m "C:\@DEV\@LIB\@Magic\GetGnuWin32\bin\magic"
C:\123.zip; ASCII text, with no line terminators
C:\Users\Admin>cd C:\@DEV\@LIB\@Magic\GetGnuWin32\bin
C:\@DEV\@LIB\@Magic\GetGnuWin32\bin>file C:\123.zip -m magic
C:\123.zip; ASCII text, with no line terminators
ATUALIZAÇÃO 2 (RESOLVIDO):
print(magic.Magic())
magic.MagicException: could not find any magic files!
print(magic.Magic(magic_file = 'magic'))
<magic.Magic instance at 0x02A5E198>
só tinha que especificar o arquivo explicitamente