2014-04-10 3 views
0

이전 코드 (6 개월 전)가 돌아 왔고 갑자기 설명 할 수없는 오류가 발생했습니다. 특히 놀랍게 만드는 점은 이 내 코드에이 아니라는 것입니다. 내 자이 썬 설치와 함께 사용되는 stdlib의 복사본에 있습니다. 어떤 방식 으로든 건드린 적이 없으며 (내 컴퓨터에 로컬로 설치되어 있으므로 아무도 그렇지 않습니다. 그것을 만졌다.).Jython imaplib의이 코드가 갑자기 작동하지 않는 이유는 무엇입니까?

불쾌감을주는 코드를 없애려면 나에게 전혀 무해한 것처럼 보입니다. 표준 imaplib.py에 있으며 문제가없는 것처럼 보입니다.

File "C:\jython2.5.3\Lib\imaplib.py", line 504, in login 
    return login(user, password) 
    NameError: global name 'login' is not defined 

그리고 코드는 다음과 같습니다 : 내가 오류는

예, 단지 바닐라 재귀의
def login(self, user, password): 
    """Identify client using plaintext password. 

    (typ, [data]) = <instance>.login(user, password) 

    NB: 'password' will be quoted. 
    """ 
    typ, dat = self._simple_command('LOGIN', user, self._quote(password)) 
    if typ != 'OK': 
     self.error(dat[-1]) 
     time.sleep(15) 
     return login(user, password) 
    self.state = 'AUTH' 
    return typ, dat 

?

어떻게 이런 문제를 해결할 생각인가요? 나는 꽤 난처한 처지이다.

return login(user, password) 

사용 : 대신

답변

0

드디어 근본적인 문제를 발견했다. 누군가가 계정에 대한 인증 정책을 변경했기 때문에 올바른 자격 증명으로도 Google에 로그인 할 수 없었습니다. 이 시나리오에서 '로그인'이라는 이름이 정의되지 않은 이유에 대해 자세히 설명하지는 않았지만 Google 계정에 올바른 액세스 권한을 설정하면 문제가 해결된다는 것을 알고 있습니다.

0

return self.login(user, password) 

(사용 방법이 아닌 글로벌 기능)

+0

도움 주셔서 감사합니다. 이 코드는 stdlib 파일에서 가져온 것입니다. 그런 이유로 그 코드를 변경하기를 꺼립니다. 진짜 범인은 변화된 백엔드 인 것 같습니다 (아래 답변 참조). 하지만 도움을 주셔서 감사합니다. – theodox

+0

"바닐라 재귀"에 대한 귀하의 제안이 올바르지 않습니다. 첫 번째 인자로 'self'는'login()'이 메소드임을 보여준다. 'return login (user, password)'를 호출하면 다른 login()이 호출됩니다. –