전에 컴퓨터에 문제가 발생해서 포맷한 다음에 VSCode를 다시 설치했더니 파이썬에서만 prettier가 적용이 안되는 오류가 있었다.
이미 다른 블로그에 나오는 방법은 다 해봤는데도 안되는 상황이었다.
시도했던 방법들
나는 안됐던 방법들이긴 하지만, 이 방법들로 해결할 수 있는 사람들도 있긴 할거다.
우선 첫번째로는 가장 흔히 찾을 수 있는 방법인 아래 두 가지 설정을 해줬다.
- Format On Save 체크하기
- Default Formatter를 Prettier로 설정해주기
당연히 안됨...
두번째로는 파이썬의 formatter인 autopep8과 black을 설치해봤다.
pip install black
pip install autopep8
설치한 뒤에는 VSCode `setting.json` 파일에서 Python 포맷팅 도구로 `autopep8`을 설정해줘야 한다.
{
"python.formatting.provider": "autopep8",
"editor.formatOnSave": true
}
이렇게까지 하면 될 줄 알았다. 그렇지만 안됐다......
근데 VSCode 외부(예: cmd)에서 autopep8 명령어로 포맷팅을 시도했을 때는 포맷팅이 됐다.
autopep8 -- in-place <포맷팅하려는 파일 경로>
그러면 이제 VSCode의 문제인데...?
그래서 chatGPT를 물고 늘어진 끝에 해결 방법을 알았다.
해결한 방법
1. VSCode의 익스텐션 탭에서 autopep8 설치
2. 설정 파일 업데이트
{
"python.formatting.provider": "none", // 기존 ms-python.python을 비활성화
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8"
},
"editor.formatOnSave": true
}
설정을 저장하고 VSCode를 재시작하니 비로소 포맷팅이 됐다...
안 됐던 이유?
Python 파일에서는 Prettier가 작동하지 않는 이유는 Prettier가 Python 포맷팅을 지원하지 않기 때문입니다. Prettier는 주로 JavaScript, TypeScript, HTML, CSS 등의 웹 개발 언어에 최적화된 포맷터로, Python을 포맷하려면 autopep8이나 Black과 같은 Python 전용 포맷터가 필요합니다.
VSCode에서 Prettier와 Python 포맷터(autopep8 등)를 함께 사용하려면, 언어별로 다른 포맷터를 설정하여 혼용할 수 있습니다. 예를 들어, settings.json에 아래와 같은 설정을 추가하면 JavaScript와 Python 각각에 맞는 포맷터가 자동으로 적용됩니다.
{ "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[python]": { "editor.defaultFormatter": "ms-python.autopep8" }, "editor.formatOnSave": true }
이 설정으로 JavaScript는 Prettier, Python은 autopep8을 사용하도록 할 수 있습니다. Prettier는 Python 파일을 지원하지 않으므로, Python 파일에는 해당 포맷터를 적용하지 않는 것이 일반적입니다.
그러니까 prettier는 원래 Python 포맷팅을 지원하지 않기 때문에 있었던 일이었던 것이다. 이번 기회에 prettier가 어떤 언어를 지원하는지 찾아봤더니 다음과 같았다.
대체적으로 웹 개발을 위한 언어를 지원하고 있음을 알 수 있다.
따라서 파이썬을 포맷팅하기 위해서는 `autopep8`이나 `black`과 같은 파이썬 포맷터를 사용해야 한다.
'이것저것' 카테고리의 다른 글
오블완 챌린지 (4) | 2024.10.31 |
---|---|
[CSS] flexbox를 게임을 통해서 익히기 (0) | 2024.08.20 |
간지나게 코딩하는 척하기 (0) | 2024.08.20 |
마이크로소프트 365 구독 취소, 환불 (1) | 2024.07.02 |
twscrape를 이용한 X (구 트위터) 데이터 수집 (0) | 2023.10.24 |