파이썬 import 정리 방법
파이썬 import 문들 자동으로 정리해주는 vscode 확장이나 커맨드라인이라도 있어? 예를 들어 안 쓰는 import를 정리한다든지 순서를 정리해주는 기능이 있으면 좋겠어.
네, 파이썬 import 문을 자동으로 정리해주는 VS Code 확장과 커맨드라인 도구가 있습니다. 대표적으로 다음 두 가지가 가장 많이
쓰입니다:
1. isort (Import Sorter)
-
기능 :
-
import문 정렬 (표준 라이브러리, 서드파티, 로컬 모듈 순으로) -
알파벳 순 정렬
-
그룹 분리
-
-
불필요한
import제거는 안 함 →autoflake또는ruff와 병행 필요 - 설치 :
pip install isort - 사용 예시 (CLI) :
isort your_script.py - VS Code 설정 연동 (settings.json) :
"python.sortImports.args": ["--profile", "black"], "editor.codeActionsOnSave": { "source.organizeImports": true }
2. autoflake
-
기능 :
-
사용하지 않는
import제거 -
사용되지 않는 변수 제거 (옵션 설정 시)
-
- 설치 :
pip install autoflake - 사용 예시 :
autoflake --in-place --remove-unused-variables --remove-all-unused-imports your_script.py
3. ruff (올인원 정적 분석기)
-
기능 :
-
isort기능 포함 (import정렬) -
autoflake기능 포함 (unused import제거) -
매우 빠름, 추가 린트도 가능
-
- 설치 :
pip install ruff - 사용 예시 :
ruff check your_script.py --fix - VS Code 플러그인 : "Ruff" 설치 가능
결론
가장 효율적인 조합은:
-
정렬:
isort -
제거:
autoflake또는ruff -
통합:
ruff하나로 정리하는 것도 가능
VS Code에서는 ruff 확장 설치 후 "editor.codeActionsOnSave" 설정해두면 저장 시 자동 정리까지 됩니다.
필요하시면 VS Code에 적용할 .vscode/settings.json 템플릿도 드릴 수 있습니다.
근데 import를 보통 어떤 방식으로 정렬해? 단순 이름순으로 하기보다는 파이썬 내장 패키지, 써드파티 패키지, 현재 개발 중인 패키지로 나누는 것도 좋을 것 같은데
맞습니다. 단순히 알파벳 순으로 정렬하는 건 실무에서는 별로 의미가 없습니다. 보통은 "Import 그룹 분리 + 그룹 내부 알파벳 정렬" 방식이 표준처럼 사용됩니다. 이건 PEP8 스타일 가이드도 권장하는 방식입니다.
✅ 일반적으로 사용하는 import 정렬 방식 (PEP8 + isort 기본 스타일)
-
표준 라이브러리
-
써드파티 패키지
-
로컬/자체 개발 패키지
각 그룹은 한 줄 공백으로 구분 하고, 그룹 내부에서는 알파벳 정렬 합니다.
📌 예시
import os
import sys
import numpy as np
import requests
import myproject.utils
from myproject.config import settings
-
os,sys→ 표준 라이브러리 -
numpy,requests→ 서드파티 -
myproject.*→ 로컬 프로젝트
🔧 isort로 이 구조 맞추기
isort는 기본적으로 위의 구조를 따르며, 세부 설정도 가능합니다.
예시 설정 (pyproject.toml)
[tool.isort]
profile = "black"
known_first_party = ["myproject"]
line_length = 88
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
-
known_first_party→ 현재 프로젝트 이름 -
profile = "black"→ Black 스타일과 호환
📌 참고: 다른 스타일도 존재함
일부 회사나 팀은 다음과 같이 세분화해서 정렬하기도 합니다:
-
Built-in (Python 내장)
-
Standard library
-
Third-party
-
First-party (자사 모듈)
-
Relative imports
하지만 대부분은 isort의 3단계 분리(표준 / 써드파티 / 로컬)로 충분합니다.
결론
-
단순 알파벳 정렬은 실용적이지 않음
-
그룹별로 나누고, 각 그룹 안에서 정렬 하는 방식이 일반적
-
isort나ruff에서 자동화 가능 -
known_first_party,known_third_party등의 설정이 중요
필요하면 예제 설정 파일도 만들어 드릴 수 있습니다.