2016-11-20 7 views
1

モジュールpython-magicを数時間インストールしようとしましたが、何か問題が発生しました。私はPython 3.5.2の32ビット版を64ビットWindows 7で使用しています。Python-magicにOSErrorがあります:IDLEの32ビットバージョンで実行中に[WinError 193]エラーが発生しました

まず、コマンド「pip install python-magic」を使用しました。私はWindowsプロジェクト用ファイルからmagic1.dll、regex2.dll、およびzlib1.dll、そして魔法をダウンロードして、私は

C:\Program Files (x86)\Python35-32\Lib\site-packages\python_magic-0.4.12-py3.5.egg-info. 

に、これらの4つのファイルをコピーした私は、私の中でPATHの先頭に前述のディレクトリを追加しましたWindows環境変数。それからIDLEのシェルを開き、 "import magic"と入力して応答OSError: [WinError 126] The specified module could not be foundを得ました。

「マジック」ファイルの拡張子は.dllなので、名前を変更しました。これにより、Windows "C:\Program Files (x86)\Python35-32\Lib\site-packages\magic.dll is either not designed to run on Windows or contains an error"とPythonのポップアップ警告"OSError: [WinError 193] %1 is not a valid Win32 application "が表示されました。後者のエラーは64ビット環境で実行しているときによく発生することが判明しましたが、32ビットIDLEで実行するようにしました。

previous StackOverflow postsのアドバイスに従って、cygmagic-1.dll、cygwin1.dll、およびcygz.dllをC:\ Windows \ System32に同じフォルダにコピーしてみました。 magic.dllとしてcygmagic-1.dllの名前を変更しようとしましたが、何の効果もありませんでした。他の場所でCygwin PythonとWindows Pythonを混在させてはいけないと言いますが、試しました。これらのファイルの関与なしで、それはどちらもうまく動作しませんでした。

aming magic.dllからmagic.exeへ、そしてそれは "import magic"とマジックを許可しました。 Magic(magic_file=r'C:\Program Files (x86)\Python35-32\Lib\site-packages\python_magic-0.4.12-py3.5.egg-info\magic.exe') with the response "<magic.Magic object at 0x02EA0A70>". When I tried testing with magic.from_file(r'C:\Program Files (x86)\Python35-32\Lib\site-packages\README.txt'), though, I got the error magic.MagicException: b'could not find any magic files!私はmagic.exeに名前を変更するのは間違っていたが、それは試してみる価値があると思った。

私がpython-magicをあきらめた後、誰かがolder projectを勧めました。私はそれをダウンロードし、私のサイトパッケージディレクトリにpymagicフォルダを置く。 pymagic.pymagicをインポートしようとしたときに、StringIOモジュールが存在しないと教えてくれました。そして、推薦者はStringIOがPython2のものであると言いました。私はこの仕事を得るために変更を加える方法を知っているモジュールなど、すべてのIOにはStringIOの言及変更とこれは私がIO、PythonのOSに十分関与していないよ、エラーTypeError: startswith first arg must be bytes or a tuple of bytes, not str.を生成したコマンドにpymagic.pymagic.identify_file(r'E:\Pictures\picture.jpg')

を試してみました。誰でもpython-magicやpymagicなどの作業方法やヘッダーに基づいてファイルを識別するための他のモジュールを入手する方法についての推奨事項はありますか?私はこの質問がたくさん尋ねられていることを知っていますが、以前の回答は私のためにうまくいかなかった。

答えて

1

「マジック」データファイルmagicを呼び出して、magic1.dllと同じフォルダに残しましたか?

あなたの指示に従って、私はあなたと同じエラーを再現することができました。 Sysinternals Process Monitorを使用すると、最初のエラーの原因は、Pythonがマジックデータファイルをライブラリのように読み込もうとしているように思えます。

次に、マジックデータファイルの名前をmagic_dataに変更し、IDLEを再起動して機能させました。 (私はあなたにPythonの(3.4)の別のバージョン、およびWindowsの異なるバージョン(10)を使用していますが、私はこれらを考えていない

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> import magic 
>>> fn = r'C:\Python34\Lib\site-packages\python_magic-0.4.12-py3.4.egg-info\magic_data' 
>>> m = magic.Magic(magic_file=fn) 
>>> m.from_file(r'C:\Python34\Lib\site-packages\python_magic-0.4.12-py3.4.egg-info\zlib1.dll') 
'PE32 executable for MS Windows (DLL) (console) Intel 80386 32-bit' 

:私は、ファイルを識別するためにmagicを使用することができます)。

+0

これは完璧に機能しました。さて、GitHubのドキュメントが警告しているPATHからC:\ cygwin \ binを削除して解決した「WindowsError:exception:access violation write 0x00000000」というバグがありました。 – raincloud

関連する問題