KeyError:'数据'使用Python Instagram API客户端

时间:2015-11-25 19:08:03

标签: python instagram instagram-api keyerror

我在Python 3.4.3上使用此MacOS客户instagram

以下是我的步骤:

  • client_id注册了新客户,收到了client_secretpython-instagram
  • Pip install sample_app.py
  • <h2>复制到我的mac

我按照Dapper上的说明操作,我通过Instagram成功授权了我的应用并试用了python-instagram,但没有一个有效。点击Remaining API Calls = 486/500标题和API请求更改后,我看到User Recent Media

如果我尝试在我的终端中显示KeyError: 'data'异常try - except。如果我删除了try构建,请在Traceback (most recent call last): File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 862, in _handle return route.call(**args) File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 1732, in wrapper rv = callback(*a, **ka) File "sample_app.py", line 79, in on_recent recent_media, next = api.user_recent_media() File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 197, in _call return method.execute() File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 189, in execute content, next = self._do_api_request(url, method, body, headers) File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 151, in _do_api_request obj = self.root_class.object_from_dictionary(entry) File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/models.py", line 99, in object_from_dictionary for comment in entry['comments']['data']: KeyError: 'data' 中保留阻止,当我看到“错误:500内部服务器错误”时。

这是追溯:

{{1}}

我使用的所有代码都来自Instagram官方python API客户端的示例。

4 个答案:

答案 0 :(得分:22)

此错误有一个开放的Github issue,已发送fix,但尚未合并。

在已安装的软件包上添加一行修复models.py

用sudo打开:

sudo vi /Library/Python/2.7/site-packages/instagram/models.py  # Use relevant python version 

在第99行,添加:

if "data" in entry["comments"]:

在接下来的两行上更正缩进:

       for comment in entry['comments']['data']: 
           new_media.comments.append(Comment.object_from_dictionary(comment))

答案 1 :(得分:5)

似乎models.py中存在错误。如果您在该文件中注释掉第99和100行,那么&#34;示例应用程序&#34;会起作用,或者至少看起来有效。显然,这不是一个真实的&#34;修复,但它确实表明它不是示例Python程序或Instagram的问题。

    Line 99  #  for comment in entry['comments']['data']:
    Line 100 #      new_media.comments.append(Comment.object_from_dictionary(comment))

答案 2 :(得分:1)

+1来自@forge的回答

对于docker用户(如评论中所述),分叉python-instagram repo,编辑,然后通过github pip install。

或者只是在Dockerfile中使用其他人的fork并使用以下行:

pip install git+https://github.com/zgazak/python-instagram

答案 3 :(得分:0)

当你在docker这样的环境或没有可读终端的环境中工作时,基于@forge的答案,这不是一个简单的答案。

sed -i '99,100 s/^/#/' /usr/local/lib/python3.5/site-packages/instagram/models.py