__init __()在python / django中得到了一个意外的关键字参数'mime'

时间:2012-09-26 19:55:57

标签: python django mime magic-methods

.py文件中此代码的第一行返回错误。

mime = magic.Magic(mime=True)
content_type = mime.from_buffer((data).read(1024))
request.session['content_type'] = content_type
if content_type == 'application/pdf' or content_type == 'application/msword':
    request.session['upload_status'] = "Content type is valid according to (MAGIC)"

错误消息是 __init__() got an unexpected keyword argument 'mime'

我正在使用Django 1.4.1和Python 2.7.3。我安装了Magic。没有任何线索出错 - 任何帮助都表示赞赏!

4 个答案:

答案 0 :(得分:4)

只是在黑暗中刺伤,但documentation表示你不应该直接实例化Magic类。

import magic
magic.from_buffer(open("testdata/test.pdf").read(1024))

答案 1 :(得分:1)

Magic对象的构造函数不接受名为'mime'的参数。我建议用帮助(magic.Magic)查看doc字符串;它可能会给你一个线索。

答案 2 :(得分:0)

根据上述建议,如果与JIRA服务器的连接失败并显示错误:

The error message is __init__() got an unexpected keyword argument 'mime'

然后去编辑

/usr/lib/python2.7/site-packages/jira/client.py 

替换

self._magic = magic.Magic(mime=True)

self._magic = magic

然后运行这样的代码:

from jira.client import JIRA
import magic
...
jira = JIRA(options={'server':'https://jira.server.goes.here'}, basic_auth=(options.username, options.password))

我正在使用python 2.7.3和jira-python(http://jira-python.readthedocs.org/en/latest/

答案 3 :(得分:0)

您最有可能使用另一版本的magic。如果我从上次查找这些东西时没记错的话,Ubuntu附带了一个不同的版本(也许还有一个叫做filemagic的东西)。开箱即用的Cygwin版本也是如此。那是我的情况。

我重新安装了Cygwin并遇到了相同的问题-Python的两个版本magic / python-magic / filemagic。我在SO上回头寻找解决方案,但是没有很快找到它。幸运的是,我以前记过笔记,对我有用的解决方案是:

$ sudo pip3 uninstall filemagic
$ sudo pip3 install python-magic 

或者,在我的Cygwin安装中哪个效果更好:

$ python -m pip uninstall filemagic
$ python -m pip install python-magic

那为我解决了这个问题。

当我搜索有关此问题的更多信息时,我在github上遇到了非常相似的解决方案herearchived)。还有一个额外的步骤。

卸载filemagic:

sudo pip3 uninstall filemagic

卸载python-magic:

sudo pip3 uninstall python-magic

(可能添加)

sudo apt-get uninstall python-magic

安装python-magic:

sudo pip3 install python-magic

通过快速搜索,我找不到magic的两个版本的详细信息。我刚刚在线程上发现一些注释,说“您必须具有magic的其他版本”或“您必须具有magic的其他版本”。

修改 我已使用magic来源更新了此答案。由此看来,在将python-magicpip

一起安装之前,您可能必须执行另一条命令。

sudo apt-get uninstall python-magic

如上所述。


编辑

我发现了有关magic的不同版本的详细信息。

我有以下三个链接(firstsecondthird

基本上,有两种版本。支持最多的是PYPI,而且(在我看来)使用频率更高。当前是(v.0.4.15)(2020-02-19),其github页面是第一个链接。在该页面上,您可以阅读以下内容:

名称冲突

可悲的是,有两个使用模块名称magic的库。两者都已经存在了一段时间。如果您正在使用此模块,并且使用类似open的方法出错,则您的代码需要另一个。希望有一天,这些问题会得到解决。

第二个版本似乎引起最多的问题,当前是(2020-02-19)v5.25。根据第三个链接和我自己的研究,当在某些版本的Ubuntu上使用sudo apt-get install python-magic时,将安装此链接。 (请查看here,了解来自Ubuntu的一些可能的详细信息。)

所有这些的最佳解释在第二个链接中。推荐@mhawke很好地解释了事情。

以下是上述链接的存档版本:archived firstarchived secondarchived thirdarchived Ubuntu information