ImportError: cannot import name ‘XX’ from ‘XXX’
AttributeError: module ‘XXX’ has no attribute ‘XX’
이러한 터미널 에러로 애 먹고 있는가?! 💢💢 파이썬 모듈 import에 자꾸 실패할 때, ‘이것’만 확인해도 해결할 수 있다. 사족을 건너뛰고 골자만 취하고 싶다면 아래로 스크롤 하시길.
서론
머리통 터진다 ㅜㅜ 동적 브라우저 기능 추가하려고 원래 있던 프로젝트에 셀레니움 사용하는 모듈을 추가했는데 디렉토리 구조가 꼬인건지 동작을 안험 😩
— Rimu (@BunnieeeeY) June 7, 2023
지난 수요일, 기존 자동화 프로젝트 + 셀레니움 사용한 모듈을 합치는 과정에서 뭔가가 계속 꼬여 머리통을 터뜨릴 뻔 했었다. 게다가 금요일까지 마감해야하는 스토리보드 업무도 있었기 때문에 더 건드리지도 못하고 있었다. 풀리지 않은 과제로 마음 한켠이 답답했다.
그러나! 이럴 땐 잠을 자고 머리를 정리한 다음 다시 차근차근 접근하면 해결될 것을 알고 있었기에 우선 스토리보드 업무를 먼저 끝낸 다음 푹 자고, 주말에는 맘 편히 내려놓고 놀러 다니며 즐겨주었다.

괜히 건드리다가 전체가 꼬일 수도 있기 때문에 프로젝트를 복제한 후 작업을 하려고 했다. 그런데 이상하게 파이참에서 closing project 펜딩이 무한으로 걸리는 문제 때문에 새 프로젝트를 열 수가 없게 되었다. 대충 구글링 해보니까 파이참 버전 업데이트와 logs 관련된 문제로 추정되는데 간단히 해결될만한 문제는 아닌 것 같아서 VS code로 갈아타버렸다. 그래도 되나 싶었지만 직접 해보니까 잘 되더라능~
작업 순서
다시 개별 모듈 작동 잘 하는지 확인을 마친 후에 임포트 작업을 시작했다. A 라는 파이썬 파일에 crawlingcharturl 라는 파이썬 파일의 charturl() 함수를 임포트하여 사용하고 싶었다.
① 우선 A 파일 상단에 임포트 코드를 넣어주었다.
import crawlingcharturl
② 그리고 모듈을 사용할 함수 부분에 변수를 지정해줬다.
아래처럼 [파일명.함수명] 형식으로 정의해주면 된다.
url = crawlingcharturl.charturl()
+ 또는 아예 상단 임포트 코드를 이렇게 작성해도 된다.
from crawlingcharturl import charturl
이 경우 모듈 사용 부분에서 변수는 이렇게 지정하면 될 것이다.
url = charturl()
③ 그리고 셀레니움으로 가져온 해당 데이터가 필요한 부분에 앞서 정의해준 변수를 아래 형식으로 넣어주었다.
{url}
④ 제대로 작동할지 기대하며 파이썬 파일을 실행해줬다. 그리고 문제가 생겼다.
오류 해결하기
ImportError: cannot import name ‘charturl’ from ‘crawlingcharturl’
AttributeError: module ‘crawlingcharturl’ has no attribute ‘charturl’
파이썬 파일을 실행하자 갖가지 종류의 임포트 에러가 뜨는 것이었다. 분명히 모듈 지정을 확실하게 해 주었고 함수 세팅도 확실한데 왜 이런 오류가 나오는 것일까? 챗GPT에게 물어보았다.

1번과 3번 항목은 해당사항이 없었지만 2번 항목에 눈길이 갔다. 내가 파일 저장을 안했던가..?
반신반의하는 마음으로 ‘crawlingcharturl’ 파일을 열고 Ctrl + S 를 눌러 저장해주었다.
그러고 나서 A 파일을 실행하니까 거짓말같이 제대로 작동되었다. 😱 너무 간단하잖아!!
챗GPT에 따르면 종종 파일이 저장되기 전에 수정 사항을 저장하지 않아 이러한 문제가 발생할 수 있다고 한다. 만약 import 관련 에러로 고생 중이라면 해당 모듈을 저장하고 실행해보길 권한다~
마치며…
지난 주엔 셀레니움 자체를 다루는 데 너무 집중하느라 숲을 제대로 못 보고, A 모듈과 합치는 과정이 미흡했던 것 같다. 그래서 뭔가 이상한 실수를 해서 디렉토리를 꼬이게 만든 것 같다. 시간이 지나고 머리를 정리한 뒤에 다시 차근차근 해보았더니 너무 깔끔하게 해결되었다.
이렇게 나의 셀레니움 테스트도 성공리에 마무리되었다! 새로운 무기가 생겼으니 이걸 기반으로 앞으로 여러 가지를 꾸며보도록 하겠다😏
🍀함께 보면 도움되는 글🍀 파이참 터미널 실행 방법 (메뉴 위치, 단축키) git push 안되는 문제 해결하기 (Pycharm, GitHub) cron expressions (크론 표현식) 초간단 정리
글 더보기
아뿔싸! AWS 비용이 청구되었습니다(EC2 인스턴스 해지/삭제하기)
CSS 클래스 이름에 공백이 있을 때 이렇게 하세요
g++ 컴파일을 위한 mingw-w64 패키지 설치하기
파이썬 f-string 오류 해결하기 ‘f-string: empty expression not allowed’
cron expressions (크론 표현식) 초간단 정리
git push 안되는 문제 드디어 해결!