Skip to content

如何開始

chen-tf edited this page Dec 30, 2022 · 6 revisions

IDE (Pycharm) 設定

Pylint

linter,修改code style 下載:https://plugins.jetbrains.com/plugin/11084-pylint

裝好plugin後,在terminal安裝pylint

pip3 install pylint

打開pycharm的 prefrence > other setting > Pylint 修改 “Path to Pylint executable” 對應到pylint安裝的位置. 如果不知道裝在哪,可以輸入以下指令:

which pylint

例圖

black

formatter 修改排版

pip3 install 'black[d]'

下載:https://plugins.jetbrains.com/plugin/14321-blackconnect

裝好pluin後,pycharm 點開 prefrence > Tools > BlackConnect

打勾 “Start local blackd instance when plugin loads”

按一下 Detect 按鈕 ,plugin會找black放在哪裡

在 Trigger Settings 打勾 “Trigger on code reformat” 讓pycharm的code format功能使用black

現在就可以用Black修改Format了, 打開工具列的Code -> Reformat Code

如果想在每次修改檔案時都自動format,可以在 Trigger Settings 內打勾 “Trigger when saving changed files”

例圖

isort

更改import module的排版

pip3 install isort

安裝File Watcher Plugin: https://plugins.jetbrains.com/plugin/7177-file-watchers

Pycharm 點開 Preferences -> Tools -> File Watchers ,點左上角的 + 新增 watcher

在對應欄位輸入下列值

Name -> isort

File Type -> Python

Scope -> Project Files

Program -> \$PyInterpreterDirectory\$/python

Arguments -> -m isort \$FilePath\$ --profile black

Output paths to refresh -> \$FilePath\$

Working directory -> \$ProjectFileDir\$

Advanced Options 區塊

Uncheck “Auto-save edited files to trigger the watcher”

Uncheck “Trigger the watcher on external changes”

例圖

用法

  • pylint 照上述設定後,pylint 會出現在 pycharm 下方,點開後可以自行決定要掃哪裡 也可以在 pycharm 的 inspection 中決定要不要開 pylint real-time scan,建議關閉或不要開通知
  • isort isort部分則只要對單一檔案進行修改並存檔,就會自動幫你在import部分拉成三個block python 自帶lib -> 第三方lib -> 本地lib
  • black black部分,打開工具列的code -> reformat code 即可

參考

Flask-Migrate

  1. 安裝Flask-Migrate
    pip install Flask-Migrate
  2. 初始化migrations資料夾
    flask --app repository/models.py db init
  3. 根據db.Model的結構產生對應的SQL語法
    • 會在migrations/versions/底下創建一個.py檔案(如下圖的7dca07870a72_.py)
    • 也會在DB創建alembic_version表,用來記錄當前的version版本(7dca07870a72)
    flask --app repository/models.py db migrate -m "init"
  4. 更新到DB
    • 觸發7dca07870a72_.py內的upgrade(),新增該table
    • alembic_version表也會把該version記錄起來
    flask --app repository/models.py db upgrade
  5. 後悔了(降版)
    • 觸發7dca07870a72_.py內的downgrade(),刪除該table
    flask --app repository/models.py db downgrade

特殊情境

  • migrations/version底下已經有對應的版本了
    flask --app repository/models.py db upgrade
  • 一直migrate出不來可以用以下的方式試試看
    flask --app repository/models.py db stamp head
    flask --app repository/models.py db migrate
    flask --app repository/models.py db upgrade

參考

Clone this wiki locally