PythonMagic在32位版本的IDLE中运行时出现OSError:[WinError 193]错误
我已经试着安装这个模块几个小时了,我遇到了一些问题。我正在使用32位版本的Python 3.5.2和64位Windows 7 首先,我使用命令“PythonMagic在32位版本的IDLE中运行时出现OSError:[WinError 193]错误,python,python-magic,Python,Python Magic,我已经试着安装这个模块几个小时了,我遇到了一些问题。我正在使用32位版本的Python 3.5.2和64位Windows 7 首先,我使用命令“pip install python magic”。我从Windows项目的文件中下载了magic1.dll、regex2.dll和zlib1.dll以及magic,并将这四个文件复制到 C:\Program Files (x86)\Python35-32\Lib\site-packages\python_magic-0.4.12-py3.5.egg-i
pip install python magic
”。我从Windows项目的文件中下载了magic1.dll、regex2.dll和zlib1.dll以及magic,并将这四个文件复制到
C:\Program Files (x86)\Python35-32\Lib\site-packages\python_magic-0.4.12-py3.5.egg-info.
我在Windows环境变量的路径开头添加了上述目录。然后我打开IDLE的Shell并键入“import magic
”,得到了响应OSError:[WinError 126]指定的模块找不到
我读到“magic”文件应该有扩展名.dll,所以我重命名了它。这导致Windows出现弹出警告:“C:\Program Files(x86)\Python35-32\Lib\site packages\magic.dll不是为在Windows上运行而设计的,或者包含错误”,而Python则显示“OSError:[WinError 193]%1不是有效的Win32应用程序””。我了解到,在64位环境中运行它时,通常会遇到后一个错误,但我确保在32位空闲状态下运行它,并且只安装了32位版本的Python
按照的建议,我尝试将cygmagic-1.dll、cygwin1.dll和cygz.dll复制到C:\Windows\System32,与magic.dll复制到同一个文件夹中,并且尝试将cygmagic-1.dll重命名为magic1.dll,但没有任何效果。我知道其他地方说你不应该混合使用Cygwin Python和Windows Python,但我在没有这些文件参与的情况下尝试了它,当时它也不起作用
我尝试将magic.dll重命名为magic.exe,这允许“导入magic”和magic。magic(magic\u file=r'C:\Program Files(x86)\Python35-32\Lib\site packages\python\u magic-0.4.12-py3.5.egg info\magic.exe)的响应为“”。但是,当我尝试使用magic.from_文件(r'C:\Program Files(x86)\Python35-32\Lib\site packages\README.txt)进行测试时,出现了错误magic.magiceException:b'找不到任何magic文件代码>我认为将其重命名为magic.exe肯定是错误的,但值得一试
在我放弃python魔法后,有人推荐了一个。我下载了它并将pymagic文件夹放在我的站点包目录中。当我尝试导入pymagic.pymagic时,它告诉我StringIO模块不存在,推荐人告诉我这是因为StringIO来自Python2。我将所有提到StringIO的内容都改为io,并尝试使用命令pymagic.pymagic.identify_文件(r'E:\Pictures\picture.jpg')
这就产生了一个错误TypeError:startswith first arg必须是字节或字节元组,而不是str。
我对Python的os、io等模块了解不够,不知道如何进行修改以使其正常工作。有人能就如何让pythonmagic或pymagic工作,或任何其他基于文件头识别文件的模块提出建议吗?我知道这个问题被问了很多次,但之前的答案对我来说并不合适。您是否调用了“magic”数据文件magic
,并将其放在与magic1.dll
相同的文件夹中
按照你的指示,我能够重现与你相同的错误。通过使用,我可以看出您出现第一个错误的原因似乎是Python试图像加载库一样加载magic数据文件
然后我将magic数据文件重命名为magic_data
,重新启动IDLE,它就工作了。然后我可以使用magic
识别一个文件:
win32上的Python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月24日,22:43:06)[MSC v.1600 32位(英特尔)]
有关详细信息,请键入“copyright”、“credits”或“license()”。
>>>进口魔术
>>>fn=r'C:\Python34\Lib\site packages\python\u magic-0.4.12-py3.4.egg info\magic\u data'
>>>m=magic.magic(magic_文件=fn)
>>>m.from_文件(r'C:\Python34\Lib\site packages\python_magic-0.4.12-py3.4.egg info\zlib1.dll')
'适用于MS Windows的PE32可执行文件(DLL)(控制台)英特尔80386 32位'
(我使用的是不同版本的Python(3.4)和不同版本的Windows(10),但我认为这些并不重要。)效果非常好。另外,我遇到了GitHub文档警告的“WindowsError:exception:access violation writing 0x00000000”错误,并通过从我的路径中删除C:\cygwin\bin解决了该错误。