python魔术模块';对象没有属性';打开';

python魔术模块';对象没有属性';打开';,python,Python,我正在尝试使用PythonMagic包,一个libmagic的包装类 我使用“pip安装python magic”进行安装 但当我测试它时: import magic ms = magic.open(magic.MAGIC_NONE) ms.load() 它显示模块“对象”没有“打开”属性。我在谷歌上搜索过,有人说其中一个原因是我没有一个uuu init_uuuu.py文件。所以我检查了我的peronsal站点包目录。我找到了magic.py、magic.pyc和一个文件夹python_mag

我正在尝试使用PythonMagic包,一个libmagic的包装类

我使用“pip安装python magic”进行安装 但当我测试它时:

import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()
它显示模块“对象”没有“打开”属性。我在谷歌上搜索过,有人说其中一个原因是我没有一个uuu init_uuuu.py文件。所以我检查了我的peronsal站点包目录。我找到了magic.py、magic.pyc和一个文件夹python_magic-0.4.3-py2.7.egg-info,其中只包含一些文本文件

如何获取uuu init_uuuu.py文件?我检查了其他安装的软件包,其中一些是这样的 有这样的档案


谢谢。

没有
magic.open()
函数。如果您查看,您可以看到它有
magic.from\u file()
magic.from\u buffer()函数

使用
magic.from_file()
对路径名进行测试;模块将为您打开该文件并确定类型。使用
magic.from_buffer()
测试字节序列(Python 2中的
str
,Python 3中的
bytes

还有一个
magic.magic()
类,您可以实例化(每个线程!)来改变它的操作方式:

Magic(mime=False, magic_file=None, mime_encoding=False)
记录为:

创建一个新的
libmagic
包装器

mime
-如果
True
,则返回mimetypes而不是文本描述
mime\u编码
-如果
True
,则返回编解码器
magic_文件
-使用系统默认数据库以外的mime数据库

根据
自述文件
,就公共API而言,即全部

Magic
类在内部处理
Magic.Magic\u NONE
;例如,在创建
magic.magic()
实例时设置
mime=True
将设置
magic.magic\u mime
标志


看起来您遇到的代码涵盖了一个完全不同的Python
magic
库,它需要更多的内部构件。我的建议是:不要试图复制它。使用这个新的库,它的API只有一个

为什么您认为它有一个
打开的
功能?源代码就在这里:我的测试代码来自另一个使用magic的开源项目。我以前就怀疑过这一点。通过dir(magic),我只发现magic_load和magic_open,所以我用这两个函数替换了上面的调用,但它不起作用。magic_open的返回值似乎是一个int。您认为上面的代码假设我使用的是较旧版本的python magic吗?谢谢!我在这里还发现了另一篇有用的帖子啊,对了,所以有一个
pythonmagic
,它没有在PyPI上列出,并且使用了不同的API。