파이썬 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 기본 스타일)

  1. 표준 라이브러리

  2. 써드파티 패키지

  3. 로컬/자체 개발 패키지

각 그룹은 한 줄 공백으로 구분 하고, 그룹 내부에서는 알파벳 정렬 합니다.


📌 예시

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 스타일과 호환


📌 참고: 다른 스타일도 존재함

일부 회사나 팀은 다음과 같이 세분화해서 정렬하기도 합니다:

  1. Built-in (Python 내장)

  2. Standard library

  3. Third-party

  4. First-party (자사 모듈)

  5. Relative imports

하지만 대부분은 isort의 3단계 분리(표준 / 써드파티 / 로컬)로 충분합니다.


결론

  • 단순 알파벳 정렬은 실용적이지 않음

  • 그룹별로 나누고, 각 그룹 안에서 정렬 하는 방식이 일반적

  • isortruff에서 자동화 가능

  • known_first_party, known_third_party 등의 설정이 중요

필요하면 예제 설정 파일도 만들어 드릴 수 있습니다.

Categories:

Updated: