AttributeError : ' module '의 이유는 무엇입니까? object has no attribute ' check\_output ' in Python?


Best answer

코드가 없으면 확실한 답을 찾기가 어렵지만 문제는 가져 오는 코드가 다음과 비슷하다는 것입니다.

fluff라는 모듈이 있고 해당 모듈 안에 클래스가 있습니다. fluff 클래스에 fluff;라는 메서드가 있습니다. check\_output

코드는 다음과 같습니다.

import fluff

cfg = fluff.check\_output(stuff) # You want the fluff class here

문제는 import fluff는 fluff 모듈을 가져 오는 것입니다. 필요한 fluff 클래스는 실제로 fluff.fluff.

입니다.

두 가지 솔루션이 있습니다.

1 :

import fluff

cfg = fluff.fluff.check\_output(stuff) # You want the fluff class here

2 :

from fluff import fluff # this imports the fluff class.

cfg = fluff.check\_output(stuff) # You want the fluff class here

이것은 명명 규칙이 중요한 이유 중 하나입니다. 클래스는 PEP8 명명 규칙을 따릅니다.

from fluff import Fluff # this imports the fluff class.

cfg = Fluff.check\_output(stuff) # You want the fluff class here

대문자 F는 오류를 방지하거나 최소한 잠재적 인 문제에 대한 단서를 제공하기에 충분할 수 있습니다.

-——

다른 잠재적 인 대답은 가져 오는 모듈이 다른 파일에 의해 섀도 잉됩니다 (즉, 가져올 항목을 검색 할 때 Python이 이전에 찾은 동일한 이름의 파일이 있습니다). 초보자에게 가장 일반적인 원인은 가져 오려는 모듈과 동일한 스크립트 이름을 지정하는 경우입니다. Python은 foo.py라는 스크립트가 있고 import foo를 수행하는 경우 항상 현재 디렉토리 파일을 검색하기 때문에 해당 가져 오기는 foo.py라는 스크립트를 가져올 것입니다. 아마도 원하는 것이 아닐 것입니다.

이 문제를 진단하는 가장 좋은 방법은 동일한 디렉토리에서 대화 형 콘솔을 열고 다음을 입력하는 것입니다.

>>> import

>>> .\_\_file\_\_

여기서 은 가져 오려는 모듈의 이름입니다. 2 행에있는 명령의 출력은 Python이 가져 오려고 시도한 파일의 경로이며 파일이 있어야하는 위치인지 확인할 수 있습니다.

Answer

찾지 않고 귀하의 코드에서는 두 가지 문제 중 하나 일 수 있습니다 (이 두 가지에만 국한되지 않음). 바로 다음과 같은 생각이들 수 있습니다.

  1. 모듈이 제대로 설치되지 않았습니다. 모듈에 대한 사이트 패키지 폴더를 확인하십시오. 거기 있으면 문제가 될 수 있습니다. 2, 즉 :
  2. 적절한 Python 버전으로 실행되지 않습니다. 즉, Python2 용 모듈을 설치하지만 Python3 가져 오기를 호출합니다. pip를 사용하여 모듈을 제거한 다음 pip3으로 다시 설치하여 적절한 버전을 가져옵니다. 이유는 확실하지 않지만 Raspberry Pi Zero W v1.1과 같은 일부 컴퓨터는 기본적으로 pip 명령을 3 대신 Python2로 설정합니다. python3 명령 대신 일반적인 python.

모듈 소스를 사용자의 파일로 복사하는 임시 “더티”솔루션을 제안 할 수 있습니다. 작업 디렉토리, 즉 “module”폴더를 가져와 실행중인 소스 파일과 동일한 폴더에 배치합니다. 또한 git 저장소를 복제했거나 같은 이름의 다른 폴더에있는 다른 폴더 내에 module.py 파일이있는 .zip 폴더에서 추출했을 수도 있습니다. 이 경우 다음과 같이 모듈을 바로 가져 오는 대신 module.module을 모듈로 가져 오는 것이 도움이 될 수 있습니다.

import module.module as module

대신

import module

이 코드 내에서 변경되는 양을 줄입니다. 행운을 빕니다!

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다