1. 모듈 및 파일 경로 오류
ImportError 발생 시 주로 PYTHONPATH 환경변수 미설정이 원인입니다. 파이썬 인터프리터는 PYTHONPATH에 등록된 경로에서만 모듈을 검색합니다.
# 오류 예시
Traceback (most recent call last):
File "script.py", line 5, in <module>
from core.utils import helper
ImportError: No module named core.utils
해결 방법:
import sys
import os
module_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.dirname(module_dir)
sys.path.insert(0, project_root)
2. 파일 쓰기 버전 충돌
CSV 파일 저장 시 newline 매개변수 사용으로 발생하는 TypeError는 파이썬 2/3 버전 차이 때문입니다.
# 오류 발생 코드
with open('data.csv', 'w', newline='') as f:
writer = csv.writer(f)
버전 호환성 해결:
import sys
import csv
if sys.version_info[0] >= 3:
file_mode = {'mode': 'w', 'newline': ''}
else:
file_mode = {'mode': 'wb'}
with open('output.csv', **file_mode) as f:
csv_writer = csv.writer(f)
csv_writer.writerows(data_rows)
3. 속성 참조 오류
AttributeError는 존재하지 않는 객체 속성에 접근 시 발생합니다.
# 오류 예시
data_processor = DataProcessor()
data_processor.load_config() # AttributeError
주요 해결 방안:
- 클래스 생성자(__init__)에서 속성 초기화 확인
- 메서드 이름 오타 검증
- 상속 구조에서 부모 클래스 메서드 확인
4. 호출 불가능 객체 오류
TypeError: 'xxx' object is not callable은 함수와 변수 이름 충돌로 발생합니다.
# 오류 발생 시나리오
data = [1, 2, 3]
len = len(data) # 변수 이름 충돌
result = len([10, 20]) # TypeError
해결 절차:
- 호출문 () 앞의 식별자 확인
- 동일 이름의 변수/함수 중복 검사
- 충돌 시 변수명 변경
5. 로깅 시스템 구성
파일/콘솔 동시 출력 로거 설정:
import logging
def setup_logger(log_file, logger_name):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
# 파일 핸들러 구성
file_handler = logging.FileHandler(log_file, encoding='utf-8')
file_handler.setLevel(logging.INFO)
file_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_format)
# 콘솔 핸들러 구성
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
# 사용 예시
app_logger = setup_logger('app.log', 'application')
app_logger.info("시스템 시작")