2

pipを使用してWin 7 64ビットにpython-magic(0.4.6)をインストールしました。次に、必要な dll を提供するために cygwin 1.7.33-2 をインストールし、magic1.dll という名前の cygmagic-1.dll のコピーを作成しました (

Python 2.7.6 32 ビット シェルを実行すると、「インポート マジック」が正常に機能します。

ただし、

magic.from_file('c:\user\username\sample.txt')

私に与える

Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
  File "c:\Python27\lib\site-packages\magic.py", line 119, in from_file    
    m = _get_magic_type(mime)  
  File "c:\Python27\lib\site-packages\magic.py", line 107, in _get_magic_type  
    i = instances.__dict__[mime] = Magic(mime=mime)  
  File "c:\Python27\lib\site-packages\magic.py", line 55, in __init__
    self.cookie = magic_open(flags)  

WindowsError: exception: access violation writing 0x00000000

このエラーの原因と修正方法はありますか? ご協力ありがとうございました!

4

1 に答える 1

2

GnuWin32ファイル パッケージには、32 ビットの magic1.dll と、その依存関係である regex2.dll および zlib1.dll が含まれています。テストから、このバージョンが python-magic で動作することがわかっています。これを 32 ビット Python 3.3 でテストするために行った手順の概要を次に示します。

ファイルを GnuWin32 のインストール ディレクトリに抽出します。

C:\Temp>set "GNU=C:\Program Files (x86)\GNU"
C:\Temp>7z x -y -o"%GNU%" file-5.03-bin.zip > nul
C:\Temp>7z x -y -o"%GNU%" file-5.03-dep.zip > nul

DLL とマジック ファイルを見つけるための環境をセットアップします。

C:\Temp>set PATH=%PATH%;%GNU%\bin
C:\Temp>set MAGIC=%GNU%\share\misc\magic

python-magic をインストールします。

C:\Temp>py -3.3-32 -m pip install python-magic  
Collecting python-magic
  Downloading python-magic-0.4.6.tar.gz
Installing collected packages: python-magic
  Running setup.py install for python-magic
Successfully installed python-magic-0.4.6

動作することを確認します。

C:\Temp>py -3.3-32                            
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:37:12) 
[MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys, magic
>>> magic.from_file(sys.executable)
b'PE32 executable for MS Windows (console) Intel 80386 32-bit'
于 2015-01-31T02:25:03.467 に答える