最适合Github API v3的python库

Chr*_*oph 80 python api github

我正在寻找适合我的Github APIv3的python库.

我在GH API文档中找到了一个库(python-github3).在ipython中玩了一两个小时之后,我发现探索/使用它真的不直观.我看了一下,发现有很多人至少试图写这样的图书馆.看起来更有希望(一目了然)是PyGithub另一个python-github3,它显然与第一个不同.

在我连续几天在图书馆之后尝试图书馆之前,我想向SO社区询问该图书馆是否有一个公认的,明确的,明显的选择?

我不喜欢第一个库的是(对我来说)不直观的获取数据的方法 - 你得到的一些属性,一些你得到的方法的返回值,返回值是一些复杂的对象,必须被分页和迭代等等

在这方面,PyGithub乍一看看起来更具吸引力 - 明确地向下钻取对象层次结构,然后到达包含你想要的属性:

for repo in g.get_user().get_repos(): print repo.name

那么,任何珍珠的智慧分享?我知道我没有足够的技能来快速判断图书馆的质量,这就是我转向SO社区的原因.

编辑:fwiw,我最终使用了PyGithub.它运作良好,作者非常愿意接受反馈和错误报告.:-)

Lyc*_*cha 73

既然你提到你是一个初学的python程序员,我建议你先尝试使用没有任何Github库的JSON API.它确实不是那么困难,它会在你的编程生涯中为你提供很多帮助,因为同样的方法可以应用于任何JSON API.特别是如果看起来尝试图书馆需要几天时间.

我并不是说某些库不容易使用,我只是说从长远来看,直接使用API​​的额外努力可能是值得的.至少它会帮助你理解为什么这些库看起来"不直观"(如你所说).

获取django存储库创建时间的简单示例:

import requests
import json
r = requests.get('https://api.github.com/repos/django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']
Run Code Online (Sandbox Code Playgroud)

这是使用流行的请求库.在您的代码中,您自然也需要处理错误情况.

如果您需要使用身份验证进行访问,则会更复杂一些.

  • 提及`requests`的+1,我之前没有遇到过.看起来很漂亮. (11认同)

Chr*_*oph 23

最后,我最终使用了PyGithub.它运作良好,作者非常愿意接受反馈和错误报告.:-)

(从我的编辑改编为原始问题,以获得更好的可见性)


小智 14

PyGitHub的文档很糟糕,但产品很棒.以下是实际检索文件的快速示例,在文件开头添加新注释并将其提交回来

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments", decoded_content, file.sha)
Run Code Online (Sandbox Code Playgroud)

  • 是吗?我已经很久没有使用它,但afaik它仍然保持 - 可能打开[问题](https://github.com/PyGithub/PyGithub/issues)这个?顺便说一句,PyGithub是成功维护移交的少数几个例子之一,原始创作者没有时间了,[问志愿者](https://github.com/PyGithub/PyGithub/issues/297) . (2认同)
  • 感谢这个例子,我不知道有人可以花几个月的时间来开发他们的项目,也不愿意写几段描述如何使用它的段落. (2认同)