/vscode_python_note

教大家如何建立自己的 Visual Studio Code Python 開發環境 pylint 📝

Primary LanguagePython

Python in Visual Studio Code

這篇文章將會教大家如何建立自己的 Visual Studio Code Python 開發環境 📝

說明

最近剛好接觸到使用 VSCode 開發 Python,所以就有了這篇文章:smile:

其實我之前都是使用 Pycharm Professional 來開發的 ( 雖然他要付費,但是功能真的強:+1:)

如果想當免費仔,可以使用 VSCode,但我覺得需要稍微設定一下 ( 這篇文章會教大家 )。

請先準備以下的功課

  • 安裝 python 以及 Visual Studio Code

步驟一 - 建立 virtual environments

首先,別急著打開 VSCode,先來建立環境,如果你不知道如何建立環境,

可參考這篇文章

這邊就先建立一個 venv_demo 的環境,

alt tag

步驟二 - 設定 VSCode

這邊為了方便後續的說明,先建立一個資料夾,資料夾名稱 demo,裡面新增一個 demo.py 的檔案,

開啟的方式很多種,這邊直接右鍵開啟,

alt tag

打開後,快捷鍵 Ctrl+Shift+P,然後輸入 settings

alt tag

主要先看這兩個即可,分別是

Preferences: Open User Settings : 你可以簡單把他想成是全域的。

Preferences: Open Workspace Settings : 只在你的工作目錄內才會生效 ( 工作目錄內會多出一個資料夾 )。

這邊我們先選擇 Preferences: Open User Settings,

這邊是 ui 的呈現 ( 可直接在這邊修改 ),但我喜歡用 json 的方式,點選右邊

alt tag

這裡面有可能有你自己的設定,這邊是我自己的設定,大家可以參考一下,

alt tag

可參考 settings.json

( python.defaultInterpreterPath 這個其實不用另外設定,已註解掉 )

( 其實 json 是不適合註解的,所以才會變成這樣,但不註解我怕大家不了解 )

儲存後就會生效。

也不用擔心亂輸入或輸入錯了會造成什麼問題,如果你打錯字或沒這個東西,VSCode 會提醒你。

接著選擇 Preferences: Open Workspace Settings,

你會發現目錄資料夾底下多了一個 \.vscode\settings.json ( 因為這是 Workspace Settings )

alt tag

這邊是我自己的設定,大家可以參考一下,

alt tag

如果你的 python.venvPath 有設定對,你看你的左下角

alt tag

選他你會看到資料夾裡面全部的 venv,點了就可以啟動。

alt tag

( 如果看不到,請重新打開 VSCode,另外要 注意 Workspace Settings 會覆蓋 User Settings )

linting 有很多種,這邊選擇 pylint,更多資訊可參考 Linting Python in Visual Studio Code

儲存完畢後,快捷鍵 Ctrl+Shift+` 開啟 terminal,

你會發現環境自動啟動了 ( 看前面的小括號 venv_demo )。

( 另外一點要注意的是,VSCode 是偵測你有沒有 .py 的檔案,所以記得要在 .py 的檔案下 Ctrl+Shift+` 開啟 terminal,

否則你會覺得很怪,一直無法自動啟動環境 )

( 如果沒有啟動,可以關掉目前的 terminal 再開一個 terminal 試試看,如果還是不行,關掉 VSCode 重開,

再不行,檢查是不是設定錯了 )

alt tag

大家應該有發現右下角告訴我們沒安裝 pylint ,這時候請安裝 pip install pylint

alt tag

也可以 快捷鍵 Ctrl+Shift+P,然後輸入 linting 檢查一下

alt tag

會是 on 的狀態,因為設定了 "python.linting.enabled": true

alt tag

如果成功設定,

在 problems 底下會有很多提醒 ( code 會有一些毛毛蟲 )

alt tag

( 如果一直沒正確啟用 pylint, 可以重新開啟 vscode 或檢查安裝環境 )

也可以新增 .pylintrc 設定一些過濾

[MASTER]
# Exclude specific files or directories (comma-separated)
# ignore=.vscode/*,/test/src/tests/*
# ignore-patterns=**/test/src/tests/*.py

[pylint.messages_control]
disable = C0115,C0116,C0115,W0718

快捷鍵

環境以 linux 為主,

快速到對應找到對應的 function 或 class : Ctrl + 左鍵 或是 F12

返回上一個位置 : Ctrl + Alt + -

推薦的擴充套件

如何自動安裝, 已經幫大家放在 extensions.json,

{
    "recommendations": [
        "streetsidesoftware.code-spell-checker",
        "donjayamanne.githistory",
        "ms-python.vscode-pylance",
        "ms-python.debugpy",
        "ms-python.python",
        "mechatroner.rainbow-csv",
        "charliermarsh.ruff",
        "gruntfuggly.todo-tree",
        "redhat.vscode-yaml",
        "zhuangtongfa.material-theme",
        "editorconfig.editorconfig",
        "ms-vscode-remote.remote-containers"
    ]
}

打開 vscode 之後, 找到安裝 extensions 的地方, 輸入 @recommended,

就可以看到自己定義的 extensions,

alt tag

如果你想要建立自己的 extensions 清單,

可以直接在 extension 上點選右鍵

alt tag

就會自動幫你加入 extensions.json 底下了.

官網說明可參考 Workspace recommended extensions

Todo Tree

顯示 TODO, FIXME, etc. comment tags in a tree view

Todo Tree

YAML

YAML 格式工具

YAML

Rainbow CSV

CSV 格式工具

Rainbow CSV

One Dark Pro

Atom's iconic One Dark theme

One Dark Pro

Git History

查看 git 的工具

Git History

Git Graph

查看 git log graph 工具

Git Graph

GitLens — Git supercharged

查看 git 的工具 - 在 code 上直接看到這行最後的修改是誰改的

GitLens — Git supercharged

Code Spell Checker

檢查錯字.

Code Spell Checker

EditorConfig for VS Code

設定檔案範例 .editorconfig, 參考 python-template

root = true editorconfig 很特殊的參數.

end_of_line = lf 設定斷行字元.

insert_final_newline = true 是否要保留最後空一行.

trim_trailing_whitespace = true 是否要清除空白.

charset = utf-8 編碼設定.

indent_style = space 設定縮排要用 tab 還是 空白.

indent_size = 4 設定空格數.

EditorConfig for VS Code

Ruff

更強大更快的 Python linter (使用 Rust 寫的)

Ruff

pip install ruff

設定 Ruff 為預設的 formatter,

{
  "[python]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "charliermarsh.ruff"
  }
}

設定自動 import 排版以及 fixAll

{
  "[python]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit",
      "source.organizeImports.ruff": "explicit"
    }
  }
}

Python Debugger

Python Debugger

建議搭配 Python debugging in VS Code 一起觀看

必要時需要安裝 pip install debugpy

request 主要有 launchattach,

launch

這個就是最一般從 vscode 中 debug 重頭開始這樣.

attach

差別在於, 是調用已經啟動的進程, 意思就是必須再開一個視窗去執行這個 debug,

通常會用在已經運行的程式, 或是外部工具啟用的程序(像是 docker)

這兩個的差別使用 vscode-django-note 來參考.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Django launch",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}\\manage.py",
            "args": [
                "runserver",
                "--noreload",
            ],
            "django": true
        },
        {
            "name": "Django attach",
            "type": "debugpy",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 18000
            },
            "django": true
        }
    ]
}

launch Django launch

這很簡單, 中斷點開下去就可以了.

attach Django attach

首先, 先打開一個 terminal 執行 django, 並且要監聽一個 port, 這邊設定 18000

python -m debugpy --listen 0.0.0.0:18000 manage.py runserver 0.0.0.0:8000

接著再開啟一個 terminal 去執行中斷點 Django attach (也是設定 18000 port),

透過這個就可以成功的進入中斷點.

Vscode Dev Containers 教學

如果你是 Vscode 用戶而且也懂 docker, 非常推薦這個 Dev Containers 套件.

可以完全的在容器內開發, 不會再遇到煩人的環境不一致的問題,

要在裡面 debug 也都是沒問題的.

官方教學 Dev Containers tutorial

首先, 先安裝 docker, 如果沒安裝可參考 Docker 基本教學 - 從無到有 Docker-Beginners-Guide

接著安裝 Dev Containers 這個套件,

vscode 輸入 ctrl + shift + p

>Dev Containers: Add Dev Container Configuration Files

img

接著選 >Add configuration to workspace

(如果你想要建立在系統共用, 可選另一個)

img

接著這邊有很多 image, 選一個你喜歡的, 這邊我們選 python3

img

接著會問你需不需要安裝其他的, 如果都不需要, 直接選 ok 就好

img

之後你會看到幫你建立了一個資料夾 .devcontainer/devcontainer.json, 並且做相關設定

如果遇到權限問題, 可以考慮加入 "remoteUser": "root" 這段,

image 這邊可以放自己喜歡的 image, 這邊我們就先用這個範例,

customizations 這邊其實就是設定容器裡面的 vscode 要怎麼設定,

包含 vscode 個人化, 以及安裝哪些 vscode 套件之類的.

mounts 這部份是像 docker 中的 Volumes (可以掛路徑進去)

詳細的設定可參考 Dev Container - json_reference

啟動容器,

vscode 輸入 ctrl + shift + p

>Dev Containers: Rebuild and Reopen in Container

img

接著就要等一下了, 因為它就是在做 docker pull 的事情, 所以如果是第一次都會比較慢.

基本上它會再開啟一個 vscode, 這個 vscode 是已經在容器裡面了.

分別下 docker ps 以及 docker images 查看,

img

正在執行的容器就是我們建立了, images 則是剛剛設定的,

你可以在這容器內做任何事情, 基本上它就是一個環境,

也可以 debug

img

預先定義的套件也都會裝起來

img

退出的方式, 點選左下角, 選擇 Close Remote Connection,

或是用一般的 docker compose down 也可以

img

結論

基本上 VSCode 可以設定的東西真的非常的多,大家可以自行摸索。:relaxed:

這篇是教大家一些很基本的設定,未來如果有機會,再介紹更多的功能給各位認識。

Donation

文章都是我自己研究內化後原創,如果有幫助到您,也想鼓勵我的話,歡迎請我喝一杯咖啡:laughing:

alt tag

贊助者付款

License

MIT license