2012-04-28 7 views
1

는 나는이 방법의 몇 가지를 사용하는 모듈을 가져올려고하고, 갑자기 어떤 이유로 나는 오류 얻을 : 나는 방법이 물론가져 오기 모듈, AttributeError

AttributeError: 'module' object has no attribute 'getFoobar' 

을 가져 오는 모듈에서 getFoobar. 다른 파일에서도 문제없이 사용하고 있습니다. 이것은 전에 결코 일어나지 않았다.

이미 모든 .pyc 파일을 삭제하려고했는데 동일한 폴더에 __init__.py이 있고 상호 가져 오기가 수행되지 않았 음을 확인했습니다.

나는 SO와 Google을 검색했는데 어떤 해결책으로도 문제가 해결되지 않았습니다. 무슨 일이 벌어 질 지에 대한 아이디어가 있습니까? 그 밖의 무엇을 시도 할 수 있습니까?

감사합니다.

+3

여기서 일반적인 문제는 모듈 이름 충돌입니다.'import gronk'는 다른 버전이'sys.path'에서 더 일찍 나타날 때까지 의도 된 버전의 gronk을 얻습니다. 모듈의'__file__' 속성을 출력 해보십시오. – torek

+0

나는 그 생각을하지 못했다. 그러나 그것은 그렇지 않았다. 명백하게 나는 상호 수입품을 기각하는 것이었다. A.py가 B.py를 가져 왔으므로 B.py는 A.py를 가져 오지 않았기 때문에 상호 가져 오기가 없다고 생각했습니다. 내가 가져 오는 다른 모듈이 상호성을 일으키고 있는지 확인하는 것을 잊어 버렸고, (분명히)! 어쨌든, 이제 해결되었습니다! 감사합니다. 빠른 응답에 감사드립니다. –

답변

0

무료 모듈 수준 기능이나 방법에 액세스하려고하십니까? 그것은 큰 차이를 만듭니다. 이 같은 경우 :

class foo: 
    def bar1(): 
     pass 
def bar2(): 
    pass 

파일 "foo.py"에 저장을, 당신은 다음과 같이, 각각을 호출하는 다른 일을해야합니다

import foo 
f = foo.foo() 
f.bar1() 
foo.bar2() 

당신이 볼 수 있듯이 , 클래스 foo 외부에 있기 때문에 foo 모듈에서 bar2에 직접 액세스 할 수 있지만 bar2를 호출하려면 foo 클래스의 인스턴스를 선언해야합니다. 나는 당신이 foo 모듈에서 bar1을 호출하려고했다는 것을 가정하고 있는데, 이는 초보자가 흔히 범하는 실수이기 때문에, 특히 Java에서 전환 한 경우 특히 그렇습니다.

+0

명백하게 나는 상호 수입을 점검하는 것에 대해 망쳐 놨다. 자세한 내용은 위의 주석을 확인하십시오. 어쨌든 감사합니다 chameco! 아마 다른 사람들을 도울 것입니다. –