为什么我的存储库对象返回带有 github3.py 的 Nonetype



使用 github3.py 版本 0.9.5 文档,我正在尝试创建一个存储库对象,但它不断返回Nonetype,因此我无法访问存储库的内容。似乎没有任何关于StackOverflow的帖子,也没有关于图书馆GitHub问题的对话来解决这个问题。

AttributeError: 'NoneType' object has no attribute 'contents'是我收到的确切错误。

在说repo = repository('Django', auth)我尝试使用 fv4 更改身份验证的行上,但这并没有改变任何其他内容。

#!/usr/bin/env python
from github3 import authorize, repository, login
from pprint import PrettyPrinter as ppr
import github3
from getpass import getuser
pp = ppr(indent=4)

username = 'myusername'
password = 'mypassword'
scopes = ['user', 'repo', 'admin:public_key', 'admin:repo_hook']
note = 'github3.py test'
note_url = 'http://github.com/FreddieV4'
print("Attemping authorization...")

token = id = ''
with open('CREDENTIALS.txt', 'r') as fi:
    token = fi.readline().strip()
    id = fi.readline().strip()

print("AUTH token {}nAUTH id {}n".format(token, id))

print("Attempting login...n")
fv4 = login(username, password, token=token)
print("Login successful!", str(fv4), 'n')

print("Attempting auth...n")
auth = fv4.authorization(id)
print("Auth successful!", auth, 'n')

print("Reading repo...n")
repo = repository('Django', auth)
print("Repo object...{}nn".format(dir(repo)))

print("Repo...{}nn".format(repo))
contents = repo.contents('README.md')

pp.pprint('CONTENTS {}'.format(contents))

contents.update('Testing github3.py', contents)
#print("commit: ", commit)

所以你的代码有一些问题,但让我先帮助你解决你的直接问题,然后我将继续讨论其他问题。

您在感到困惑的行中使用github3.repository。让我们看一下该特定函数的文档(您也可以通过调用 help(repository) 查看)。您将看到repository期望两个参数ownerrepository,并将它们描述为存储库的所有者和存储库本身的名称。所以在你的用法中你会做

repo = repository('Django', 'Django')

但是,这会将您的身份验证凭据留在哪里...好吧,这是另一件事,你正在做

fv4 = login(username, password, token)

您只需要指定其中一些参数。如果要使用令牌,请执行

fv4 = login(token=token)

或者,如果要使用基本身份验证

fv4 = login(username, password)

两者都可以正常工作。如果您想继续进行身份验证,您可以执行

repo = fv4.repository('Django', 'Django')

因为fv4是一个GitHub对象,它记录在这里,repository函数在所有内容下面使用它。

所以这应该可以帮助你解决大部分问题。


请注意,在记录的 github3.py 示例中,我们通常将 login() gh 的结果称为 。这是因为gh只是一个存储了凭据的GitHub对象。它不是您的用户或类似的东西。那将是(在您的 github3.py 版本中)fv4 = gh.user().(如果其他人正在阅读本文并使用 github3.py 1.0 版本(当前处于预发布阶段),那么它将fv4 = gh.me()

相关内容

  • 没有找到相关文章

最新更新