天天看點

python無法啟動此程式丢失zlib.dll_Windows上“magic”庫缺少檔案

我需要為windows上的一些檔案擷取mime類型,是以我已經安裝了python-magic(在32位python 2.7.3上)。

它依賴于unix magic庫

作者訓示從gnuwin32項目中擷取regex2.dll、zlib1.dll和magic1.dll。

是以,我将檔案儲存到一個檔案夾中,并将該檔案夾添加到我的系統PATH。

現在,當我執行magic方法時,會出現丢失檔案異常:import magic

print(magic.Magic())

Traceback (most recent call last):

File "C:/Users/Admin/PycharmProjects/lex/lex.py", line 367, in

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!

dll在路徑中,我試着調試并且magic1.dll正确定位,但是庫中的某個地方抛出了異常。

在gnuwin32包中,我找到了magic和magic.mgc。我把它們放在同一個檔案夾中,然後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)

這顯然是因為python試圖将magic檔案作為dll(純文字)打開。在将.dll添加到代碼中的檔案名之後,我得到了相同的magic.MagicException: could not find any magic files!。

我丢失了哪些檔案?

更新: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

更新2(已解決):print(magic.Magic())

magic.MagicException: could not find any magic files!

print(magic.Magic(magic_file = 'magic'))

隻需顯式指定檔案