2017-10-17 21 views
0

저는 Spark (엔터프라이즈 용 채팅)로 봇을 만들고 있습니다. 파이썬에서 저는 librairy 용 PyGitHub를 사용합니다. 그래서 나는 "repos"라고 쓰고 내 방에 봇과 함께 내 repos의 목록을 돌려 보내야합니다. 내 github personnal 계정으로 작동하지만 내 professionnal 계정으로 잘 작동하지 않습니다. 왜 그 이유를 설명 할 수 있습니까? 여기 내 코드 :PyGithub, 엔터프라이즈에서 리포지토리를 가져올 수 없습니다.

def gitTest(self, details, message): 
     url = "https://enter-prise.com" 
     token = "abcd" 
     github = Github(token, base_url=url) 
     for repo in github.get_organization("org").get_repos(): 
      self.answer(details.roomId, markdown=repo.name) 


Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/main.py", line 44, in Main 
    bot.isRunnable() 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/utils/Compute.py", line 47, in isRunnable 
    self.spark(message[0], message[1]) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/testbotforgithub.py", line 33, in spark 
    return self.answer(details.roomId, markdown=self.gitTest(details, message)) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/testbotforgithub.py", line 56, in gitTest 
    for repo in github.get_organization(adt).get_repos(): 
    File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.35-py2.7.egg/github/Organization.py", line 539, in get_repos 
    self.url + "/repos", 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

내 코드가 잘못되었습니다 설명해 주시겠습니까? 감사합니다

+0

'self.url'은 분명히 '없음'입니다. –

+0

예,하지만 의미와 내용을 변경하는 방법을 이해하지 못합니까? – Kravennagen

+0

의미있게 추가 할 수없는 두 가지를 추가하려고합니다. 초등학교 수학 수업을 다시 생각해보십시오. 교사에게 5 번을 의장에 추가하라고 부탁한다면 교사에게 무엇을 말할 것입니까? 당신은 아마 질문이 말이 안된다고 말하고, 당신은 옳을 것입니다. 파이썬은'self.url'은'None'이고, 존재하지 않으며, 존재하지 않으며, 의자에 5를 더하는 것과 같다고 말하고 있습니다. 당신이 그것을 만들어야합니다. @ wpercy의 대답을보십시오. –

답변

2

인스턴스 메서드 인 경우 로컬 변수 url뿐만 아니라 self.url 특성에 할당해야합니다. 그래서 방법은 아마 다음과 같아야합니다 : 당신이 어떤 인스턴스 메서드의 첫 번째 인수로 self에 대한 참조를 전달하는 이유

def gitTest(self, details, message): 
    self.url = "https://enter-prise.com" 
    self.token = "abcd" 
    github = Github(token, base_url=url) 
    for repo in github.get_organization("org").get_repos(): 
     self.answer(details.roomId, markdown=repo.name) 

이입니다.

+0

죄송합니다. 그러나 저에게는 효과가 없습니다 ... 직접 github = Github ("abcd", "https://enter-prise.com")로 테스트하기로 결정했으나 다시는 테스트하지 않았습니다. 저의 github enterprise에서 repos를 얻을 수 없습니다. – Kravennagen