我在Python 3.4.3
上使用此MacOS
客户instagram
。
以下是我的步骤:
client_id
注册了新客户,收到了client_secret
和python-instagram
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客户端的示例。
答案 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