본문 바로가기
🌱 Computer Science/Programming

Pycharm Black 설정 및 사용법 가이드

by 카프리썬 2022. 3. 22.
728x90

black이란?

2018년 파이썬 재단에서 만든 Python Code Formatter

coding convention이 아직 명확하지 않다면 자동 포맷팅 도구인 black에 따라 진행하는것도 나쁘지 않을지도?

 

공식문서 

git : https://github.com/psf/black

docs : https://black.readthedocs.io/en/stable/

 

 

black 설치 및 적용

설치 : $ pip install black

 

적용 : $black 파일명.py

 

그럼 코드 자체가 black 포매터 규칙에 따라 자동으로 변경된다.

예를 들면 " ->' 라던가.. 줄바꿈이라던가..이런걸로 변경됐는지 확인해볼수 있다. 

 

 

반응형

 

Pycharm black 설정

혹시 pycharm을 쓰고 있다면, 아래의 내용으로 black 세팅을 진행해보록 하자! 

 

File Watcher 적용 

Preference -> Tools -> File Watcher -> + 버튼 -> Custom  ( 맥 단축키 : CMD+,  하고 file watcher 검색)

이때 program에는 black이 설치된 경로를 입력하면 된다 (which black)

아래 Advanced Options 부분에서 아래와 같이 세팅한다.

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

 

하지만 이렇게 세팅했을 경우 자동으로 black이 적용되지 않는다. 

그래서 지금까지 코드를 커밋하기전 black명령어를 한번씩 날렸다.

그런데 나는 항상 이걸 까먹엇다.....

 

Pycharm black 사용법 : 수동저장 -> black 적용 

그래서 내가 선택한 방법은 pycharm에서 자동저장을 끄고, 수동저장을 하도록 변경하는 것이다. 

pycharm은 vscode와 다르게 매번 항상 자동저장이 된다. 그래서 굳이 일부러 저장(CMD+S)를 안누르는데, 이게 오히려 불편하다.. 

그리고 저장하면 이제 black이 적용될 수 있도록 pycharm에서 세팅했다. 

 

자동저장 끄기

Preference -> Apperance & Behavior -> System Setting ( 맥 단축키 : CMD+,  하고 system 검색)

아래 AutoSave 부분에서 이 부분들을 체크 해제한다

  • Save files if the IDE is idle for ~ seconds
  • Save files when switching to a different application
  • Back up files before saving.
 

 

저장하지 않은 파일 * 표시

Preference -> Editor -> Editor Tabs ( 맥 단축키 : CMD+,  하고 Editor 검색)

Mark modified(*) 부분을 체크한다. 

그럼 코드를 수정하고 나서 저장(cmd+s)를 누르기전까지, 저장되지 않은 코드라는 표시로  파일명앞에 *를 볼 수 있다! 

 

 

save action 설정 

Preference ->Tools -> Actions on Save ( 맥 단축키 : CMD+,  하고 save 검색)

file watcher: black 부분을 체크한다. 

 

 

그러면 이제 코드를 수정하고, 내가 black 포맷팅 적용을 깜박하지 않더라고 save를 할때 자동으로 적용이 된다!

참고로 vscode에서는 이게 디폴트라는데 pycharm에서는 이렇게 별도의 설정을 세팅해야한다니..

 

개인적으로 뭔가 vscode가 안드로이드라면, pycharm은 아이폰 같다.

vsocde는 다 지원되고, 다 쉬운데 뭔가 간지가 안난다라면..

pycharm은 멋짐과 간지가 있지만 어딘가 불편해....

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });