Python AttributeError : 'module'객체에 'Serial'속성이 없습니다.
이 질문에는 이미 답변이 있습니다.
데비안을 실행하는 Raspberry Pi에서 Python 2.6으로 직렬 포트에 액세스하려고합니다. 내 스크립트 serial.py
는 pySerial을 가져 오려고 시도합니다.
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
어떤 이유로 든이 오류로 직렬 연결을 설정하지 않습니다.
AttributeError: 'module' object has no attribute 'Serial'
대화 형 Python 인터프리터에 동일한 코드를 입력하려고해도 여전히 작동하지 않습니다.
이상하게도, 그것은 약 2 시간 전에 일했었습니다.
무엇이 문제 일 수 있습니까? pySerial을 다시 설치하고 코드를 다시 작성하고 직렬 포트를 다시 확인하는 등 잠시 동안이 문제를 해결하려고했습니다.
미리 감사드립니다!
클래스가 아닌 모듈을 가져오고 있습니다. 따라서 다음과 같이 작성해야합니다.
from serial import Serial
serial
모듈을 올바르게 설치해야합니다 pip install pyserial
..
내가했던 것과 같은 실수를하는 사람들을 위해이 솔루션을 추가하고 있습니다.
대부분의 경우 : 프로젝트 파일의 이름을 'serial.py'로 바꾸고 serial.pyc를 삭제하면 속성 오류없이 간단한 'import serial'을 수행 할 수 있습니다.
파이썬 파일 이름이 'something.py'인 경우 'something'을 가져올 때 문제가 발생합니다.
실수로 sudo python -m pip install serial
'pySerial'( sudo python -m pip install pyserial
) 대신 'serial'( )을 설치 했는데 같은 오류가 발생했습니다.
이전에 언급 한 솔루션이 작동하지 않으면 올바른 라이브러리를 설치했는지 다시 확인하십시오.
' serial ' 이라는 잘못된 패키지를 설치했습니다 .
- 실행
pip uninstall serial
파이썬 2.x에서 또는pip3 uninstall serial
파이썬 3.x를위한 - 그런 다음 python 2.x 또는 python 3.x를 실행 하여 pyserial을 아직 설치하지 않은 경우 설치 하십시오 .
pip install pyserial
pip3 install pyserial
당신이 나처럼 무력하다면, 이것을 시도하십시오 :
여기에 설명 된 방법으로 "직렬"의 모든 하위 모듈 (또는 문제가있는 패키지)을 나열 하십시오. python 패키지의 일부인 모든 모듈을 나열 하십시오.
제 경우에는 문제가 차례로 해결되었습니다.
... 나에게 벌레처럼 보인다 ...
이 문제는 proyect의 이름이 serial.py이고 가져온 라이브러리의 이름도 serial이므로 이름을 변경하십시오.
순환 종속성이있는 경우에도이 오류가 발생할 수 있습니다. 수입품을 점검하고주기가 없는지 확인하십시오.
예,이 주제는 약간 낡았지만 어쨌든 필요할 수있는 사람들을 위해 일한 솔루션을 공유하고 싶었습니다.
알리가 말했듯이 터미널에서 다음을 사용하여 프로그램을 찾으십시오.
sudo python3
import serial
print(serial.__file__)
-> 복사
CTRL+D #(to get out of python)
sudo python3
-> 붙여 넣기/__init__.py
활성화 __init__.py
하면 프로그램에 "OKthon3의 Serial을 사용하겠습니다"라고 표시됩니다. 내 문제는 python3 프로그램이 Python 2.7의 Serial을 사용하고 있다는 것입니다
다른 솔루션 : 다른 파이썬 버전 제거
카오
트리 하드
'developer tip' 카테고리의 다른 글
UILabel은 레이블 크기에 맞게 텍스트를 자동 축소하지 않습니다. (0) | 2020.08.02 |
---|---|
Windows 용 Docker가 드라이브를 공유 할 수 있도록 Windows 방화벽 설정 (0) | 2020.08.02 |
Eloquent를 사용하여 테이블의 모든 행을 삭제하는 방법은 무엇입니까? (0) | 2020.08.02 |
jQuery UI 탭-현재 선택된 탭 인덱스를 얻는 방법 (0) | 2020.08.02 |
영숫자 문자 만 허용하도록 문자열의 유효성을 검사하려면 어떻게해야합니까? (0) | 2020.08.02 |