我正在尝试使用 del.icio.us API并遵循 Programming Collective Intelligence
一书中的示例当我在python 3.6.2中使用以下命令时:
>>>从Deliciousrec导入*
>>> delusers = initializeUserDict('programming')
我收到此错误:
SELECT EXISTS(
SELECT 1
FROM information_schema.columns
WHERE
table_name='messages'
and column_key = 'PRI'
) As HasPrimaryKey
我无法打开pydelicious-0.6-py3.6.egg并访问要求在此处进行修改的init文件。 以前有没有人见过这种类型的错误。我该如何解决?
答案 0 :(得分:4)
该库的PyPI page是用过去时写的:
是del.icio.us书签的HTTP API的完整Python接口。
它的主页是一个Github仓库,上面写着:
古老的书记工作(--2010)
自2010年以来唯一的更新是:
[2016] del.icio.us自2009年左右起就消失了,并重定向到Delicious.com。目前,位于del.icio.us的是另一个登录页面。不知道他们现在在干什么。”
重要提示:pydelicious尚未更新为使用OAuth协议。具有Yahoo帐户/电子邮件的新用户将无法使用此库。
因此,该库极有可能从未针对Python 3.x,它所依赖的库的最新版本或新del.icio.us
进行过更新。
但是与此同时,如果您想自己调试它,就可以。
要查看.egg
归档文件中的源代码,可以在Python中进行操作:
>>> import deliciousrec
>>> import inspect
>>> inspect.getsource(deliciousrec)
…,或者您可以使用自己喜欢的ZIP文件工具提取.egg
存档,因为这就是所有.egg
文件。
…,或者您可以克隆GitHub存储库或view it online,这可能是最好的解决方案。
正如Hamms在评论中指出的那样,如果您查看the function that's raising,它就是这样做的:
except urllib2.HTTPError, e:
# reraise unexpected protocol errors as PyDeliciousException
raise PyDeliciousException, "%s" % e
在Python 2中,这意味着要处理urllib2.HTTPError
类型的异常,并将e
绑定到该函数其余部分的异常。
在Python 2.6中,已不赞成使用此新语法:
except urllib2.HTTPError as e:
# reraise unexpected protocol errors as PyDeliciousException
raise PyDeliciousException, "%s" % e
在Python 3中,旧语法完全消失了,因此现在是非法的。
2to3
工具将自动为您解决此特定问题,但可能无法解决所有问题;您需要手动将代码移植到3.x。当然,这可能没有任何用处,因为您正试图调用在2010年消失的API。