본문 바로가기
Programming

VSCode에서 python 개발 환경 구성 하기

by 신규하 2023. 12. 19.

간만에 python을 개발해 보려고 vscode에 세팅을 하다가 Ruff라는 것을 알게 되어서 정리 해 봅니다.

Ruff 소개

Rust로 작성된 매우 빠른 파이썬 린터 및 코드 포매터입니다. 이전에 formatter와 linter를 쓰기 위해서 black, flake8 또는 pylint 등 이것 저것 조합해서 사용을 했었는데. 이걸 한번에 사용 할 수 있습니다.
거기다 기존 linter나 formatter보다 속도가 10~100배까지 빠르다고 합니다.

VSCode에서 설정 하기

설치 확장

  • Python: 파이썬 개발을 위해서 가장 기본적으로 설치 해 줘야 하는 확장입니다.
  • Pylance : 유용한 랭기지 서버로, Pyright를 이용해서 정적 유형 검사로 구동 되며, IntelliCode를 같이 사용 하면 코딩 시 유용한 제안을 해 주게 됩니다.
  • Inetellicode : 코드의 자동 완성을 도와 줍니다.
  • Ruff : 위에 소개한 어플

python에 필요한 패키지 설치 하기

아래 명령어를 실행 해서 ruff를 실행합니다.

pip install ruff pylance

일반적으로는 vscode에서 자동으로 설치가 되지만 설치가 되지 않았을 경우나 수동으로 설치가 필요한 경우에는 직접 설치를 해 주셔야 합니다.

ruff 설정 파일

프로젝트에서 사용하는 lint를 설정 할 수 있습니다. 현재 프로젝트의 상단에 pyproject.toml, ruff.toml, 또는 .ruff.toml 파일을 작성해 주면 됩니다.

URL : Configuring Ruff

예제 > .ruff.toml

exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "venv",
]

line-length = 120
indent-width = 4

[lint]
# 기본적으로 Pyflakes('F')와 pycodestyle('E') 코드의 하위 집합을 활성화합니다.
select = ["E4", "E7", "E9", "F"]
ignore = []

# 활성화된 모든 규칙에 대한 수정 허용.
fixable = ["ALL"]
unfixable = []

# 밑줄 접두사가 붙은 경우 사용하지 않는 변수를 허용합니다.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = false
docstring-code-line-length = "dynamic"

VScode 설정

settings.json에 아래와 같은 코드를 추가 해 줍니다.

  "python.languageServer": "Pylance",
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.insertSpaces": true,
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll": true,
      "source.organizeImports": true,
      "editor.insertSpaces": true
    }
  },

참고

댓글