본문 바로가기

[PyCharm] 저장 시 자동으로 코드 포맷팅 & 린트하는 방법 (black / isort / ruff)

@Jeeqong 2025. 4. 4. 04:12
반응형

개요

Python 개발할 때 black, isort, ruff를 사용해서 코드 스타일을 자동으로 정리하면 매우 효율적입니다.

PyCharm에서는 File Watcher 기능을 사용하면 파일 저장 시 자동으로 포맷팅과 린트 수정이 가능합니다.


1. File Watcher란?

🔧 File Watcher란?

File Watcher는 PyCharm의 자동 실행 도구입니다.

간단히 말해,

“파일을 저장하면 지정된 명령어(black, isort, ruff 등)를 자동으로 실행해주는 기능”

예를 들어:

• .py 파일 저장 시 → black이 자동으로 코드 정리

• isort가 import 순서를 정리

• ruff가 린트 + 포맷 자동 수정

이렇게 자동화해주기 때문에 개발자가 따로 명령어를 실행할 필요가 없습니다.


2. black, isort, ruff 설치하기

2.1 black, isort, ruff 간단 설명

도구  역할  설명
🖤 black 코드 포맷터 PEP8 기준으로 코드 스타일을 자동 정리함. "고민 없이 맡기세요" 컨셉.
📦 isort import 정리기 import 구문을 알파벳 순 + 규칙 기반으로 정렬해줌.
🧹 ruff 린터 + 포맷터 flake8, black, isort를 하나로 통합한 초고속 도구. 요즘 개발자들 사이에서 인기 많음.

2.2 예시 비교

원래 코드:

import os
import re

def   test():
 print("hello")

black + isort + ruff 적용 후:

import os
import re

def test():
    print("hello")

2.3 설치하기

pip install black isort ruff

3. PyCharm에서 File Watcher 등록

경로

Preferences → Tools → File Watchers

macos 단축키 : command + ,

window 단축키 : Ctrl + Alt + S


4. + 클릭 → Custom 선택

예시: black 설정

항목 
Name black
File Type Python
Program which black 결과 (예: /Users/you/.venv/bin/black)
Arguments $FilePath$
Working Directory $ProjectFileDir$

✔️ Trigger:

  • ✅ Auto-save edited files to trigger the watcher 체크
  • ❌ Trigger the watcher on external changes 해제


예시: isort 설정

항목 
Name isort
File Type Python
Program which isort 결과
Arguments $FilePath$

✔️ Trigger:

  • ✅ Auto-save edited files to trigger the watcher 체크
  • ❌ Trigger the watcher on external changes 해제


예시: ruff 설정 (자동 린트 fix)

항목 
Name ruff
File Type Python
Program which ruff 결과
Arguments check --fix $FilePath$

✔️ Trigger:

  • ✅ Auto-save edited files to trigger the watcher 체크
  • ❌ Trigger the watcher on external changes 해제


5. 저장만 해도 자동 정리 끝!

이제 Python 파일 저장 시:

  • black으로 코드 정렬
  • isort로 import 정리
  • ruff로 린트 & 포맷 자동 수정


✅ 결론

도구  역할  자동 실행 가능
black 코드 정렬
isort import 정리
ruff 린트 & 포맷

PyCharm의 File Watcher 기능을 활용하면

코드 품질을 유지하면서 생산성도 향상시킬 수 있습니다.

 

 

반응형
Jeeqong
@Jeeqong :: JQVAULT

Jeeqong's vault : 정보/기록을 쌓아두는 공간 웹개발 포스팅 일상 리뷰를 기록하는 공간입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차