在 Visual Studio Code 中配置 Python Flask 環境

在 Visual Studio Code 中配置 Python Flask 環境

本文由 赤石俊哉 原創編寫,您能夠在學習交流用途之內自由使用文章。
可是禁止抄襲文章,轉載時,請註明來源地址,謝謝。
最後更新時間: 2017年11月24日 17:53:15python

更多文章能夠參見 小赤石的Code Spacelinux

0. 準備階段

本文默認您已經完成了如下工做的狀況:瀏覽器

1. 安裝完成了 Visual Studio Code。
2. 安裝完成了 Python 3.6.3 而且將 Python 添加到系統變量 PATH 中。

1. 在 vscode 中安裝 python 語言支持

運行 vscode,按下 Ctrl + P,會打開一個輸入框,輸入 ext install python,就會進入擴展商店,搜索 python
咱們須要的是發行者爲 Microsoft 的那一個名爲 Python 的擴展。點擊 安裝 按鈕,安裝完成以後,點擊 從新加載安全

2. 使用 pip 安裝 virtualenv、pylint、yapf

下面是各個包的簡單說明,若是您足夠了解的話,能夠直接跳轉到 安裝過程 小節。app

virtualenv

摘自:廖雪峯的官方網站 - virtualenvide

在開發 Python 應用程序的時候,系統安裝的 Python3 只有一個版本:3.4。全部第三方的包都會被 pip 安裝到Python3的 site-packages 目錄下。
若是咱們要同時開發多個應用程序,那這些應用程序都會共用一個 Python,就是安裝在系統的 Python 3。
若是應用 A 須要 jinja 2.7,而應用 B 須要 jinja 2.6 怎麼辦?
這種狀況下,每一個應用可能須要各自擁有一套「獨立」的 Python 運行環境。virtualenv 就是用來爲一個應用建立一套「隔離」的 Python 運行環境。工具

pylint

摘自:如何使用 Pylint 來規範 Python 代碼風格

Pylint 是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合代碼風格標準(Pylint 默認使用的代碼風格是 PEP 8,具體信息,請參閱參考資料)和有潛在問題的代碼。

簡單的來講,Pylint 爲咱們提供了糾錯的功能,若是你但願在你的代碼中,及時發現標註波浪線的錯誤,請安裝它。

yapf

摘自:有哪些命令行的軟件堪稱神器? - int32bit的回答 - 知乎

Google開發的python代碼格式規範化工具,支持pep8以及Google代碼風格。

簡單的說, yapf 爲咱們提供了格式化代碼的功能,若是你但願在你的代碼中,使用 Alt + Shfit + F 來自動格式化你的 Python 代碼,請安裝它。

安裝過程

使用下面的命令依次安裝他們:

pip install virtualenv
pip install pylint
pip install yapf

安裝中可能出現的問題

下面總結一下,筆者在安裝中出現過的問題,以及解決方法。

UnicodeEncodeError 'utf-8' codec can't encode character...

這個也是一個比較常見的問題,遇到這個問題時,能夠參考錯誤中的倒數第三行中的路徑:

...
File "c:\users\xxx\appdata\local\programs\python\python36-32\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 55: invalid start byte

好比,上面的錯誤中,咱們打開c:\users\xxx\appdata\local\programs\python\python36-32\lib\site-packages\pip\compat\__init__.py這個文件,定位到 第 75 行。
return s.decode('utf_8') 改成 return s.decode('cp936')
如上操做可能須要管理員權限,建議使用 Windows + X 使用管理員權限的命令提示符或者管理員權限的 PowerShell。
而後輸入 code c:\users\xxx\appdata\local\programs\python\python36-32\lib\site-packages\pip\compat\__init__.py 改爲對應你的文件名。

3. 修改 vscode 中的設置

打開 vscode,進入 文件 > 首選項 > 設置,按照下面的註釋修改對應的值。

// 若是使用 pylint, 設置下面的爲 true。若是使用其餘語法糾錯的庫,能夠將對應的設置爲 true,其餘的設置爲 false。
    "python.linting.pylintEnabled": true

    // 若是安裝了 yapf,而且但願使用 yapf 格式化代碼的,請修改下面的選項。
    "python.formatting.provider": "yapf"

4. 使用 virtualenv 建立工程目錄

爲每個 Python 項目配置一個獨立的環境和目錄,是一個比較好的想法,這樣你能夠根據須要安裝不一樣的庫以及版本。
這一小節,將使用 virtualenv 建立一個虛擬環境,而且安裝 flask。

首先,咱們先啓動一個具備管理員權限的 PowerShell。(你也可使用 CMD)
假設咱們須要將項目放在 D:\pydemo\ 這個文件夾內。

建立文件夾並配置虛擬環境

PS D:\> mkdir pydemo

PS D:\> cd pydemo

PS D:\pydemo> virtualenv --no-site-packages .venv
Using base prefix 'c:\\program files\\python36'
New python executable in D:\pydemo\.venv\Scripts\python.exe
Installing setuptools, pip, wheel...done.

PS D:\pydemo>

若是出現上面的提示,就說明安裝已經完成了,接下來咱們要將 PowerShell 的環境切換到這個虛擬環境中。

在 PowerShell 中:

PS D:\pydemo> ./.venv/Scripts/activate.ps1
(.venv) PS D:\pydemo>

若是提示錯誤,能夠嘗試使用下面的方法解決

(.venv) PS D:\pydemo> Set-ExecutionPolicy RemoteSigned

執行策略更改
執行策略可幫助你防止執行不信任的腳本。更改執行策略可能會產生安全風險,如 http://go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 幫助主題所述。是否要更改執行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暫停(S)  [?] 幫助 (默認值爲「N」): Y

若是你使用的是 CMD,則使用下面的命令:

D:\pydemo> ./.venv/Scripts/activate.bat
(.venv) D:\pydemo>

往虛擬環境中安裝包

若是你的命令行,或者 PowerShell 已經變成了

(.venv) PS D:\pydemo>

前面有一個括號,表示的是你最開始建立的虛擬環境的位置,那麼這就說明你已經把上下文的環境切換到了虛擬環境裏面。
咱們在這裏面安裝的 pip 就不會放到公共的 site-packages 裏面了。

執行下面的命令安裝 flask 和 watchdog(若是又出現 UnicodeEncodeError,參考上一節所描述的解決方案,修改虛擬環境中的 __init__.py。)

(.venv) PS D:\pydemo> pip install flask
Collecting flask
  Using cached Flask-0.12.2-py2.py3-none-any.whl
Collecting Jinja2>=2.4 (from flask)
  Using cached Jinja2-2.10-py2.py3-none-any.whl
Collecting Werkzeug>=0.7 (from flask)
  Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Collecting click>=2.0 (from flask)
  Using cached click-6.7-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask)
Installing collected packages: MarkupSafe, Jinja2, Werkzeug, click, itsdangerous, flask
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.12.2 click-6.7 flask-0.12.2 itsdangerous-0.24

(.venv) PS D:\pydemo> pip install watchdog
Collecting watchdog
Collecting argh>=0.24.1 (from watchdog)
  Using cached argh-0.26.2-py2.py3-none-any.whl
Collecting PyYAML>=3.10 (from watchdog)
Collecting pathtools>=0.1.1 (from watchdog)
Installing collected packages: argh, PyYAML, pathtools, watchdog
Successfully installed PyYAML-3.12 argh-0.26.2 pathtools-0.1.2 watchdog-0.8.3

(.venv) PS D:\pydemo>

安裝完成以後,咱們能夠從 PowerShell 中直接運行 vscode 而且將工做目錄設置爲當前目錄(也就是D:\pydemo)。

(.venv) PS D:\pydemo> code .

5. 修改 launch.json

打開 vscode 以後,使用 Ctrl + Shift + D,或者點擊側邊欄的調試選項,調出調試選項側邊欄。
而後點擊齒輪 配置或修復 "launch.json",自動生成一個 launch.json
若是出現選擇環境,咱們選擇 Python

在 configurations 中,咱們僅保留 "name": "Python: Flask (0.11.x or later)"這一段。其餘的所有刪掉。

將這一段配置中的下面幾個選項從新配置一下:

// 將 Python 指定爲虛擬環境中的 Python
"pythonPath": "${workspaceRoot}/.venv/Scripts/python.exe"

// 將 program 和 env.FLASK_APP 都設定爲你這個項目的入口文件。
"program": "${workspaceRoot}/main.py"
"env": {
    "FLASK_APP": "${workspaceRoot}/main.py"
}

配置完以後,應該是這樣的:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask (0.11.x or later)",
            "type": "python",
            "request": "launch",
            "stopOnEntry": false,
            "pythonPath": "${workspaceRoot}/.venv/Scripts/python.exe",
            "program": "${workspaceRoot}/main.py",
            "cwd": "${workspaceRoot}",
            "env": {
                "FLASK_APP": "${workspaceRoot}/main.py"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "envFile": "${workspaceRoot}/.env",
            "debugOptions": [
                "WaitOnAbnormalExit",
                "WaitOnNormalExit",
                "RedirectOutput"
            ]
        }
    ]
}

保存並關閉。

6. 建立測試代碼並運行測試

使用 Ctrl + Shift + E 或者點擊左側邊欄的文件,回到文件側邊欄。
在 pydemo 中,咱們新建一個文件,名爲main.py。若是你上面的配置指定的是其餘文件名,能夠修改爲你本身指定的。

並加入下面的代碼:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == '__main__':
    app.debug = False
    app.run(host='localhost', port=5000)

這裏必須將 app.debug 設置爲 False,不然會出現一直Restarting
按下 F5 運行代碼,將會在 調試控制檯 中看到:

* Running on http://localhost:5000/ (Press CTRL+C to quit)

這個時候,咱們能夠經過瀏覽器訪問http://localhost:5000/,會有 Hello World! 顯示。
到此,咱們的環境配置就完成了。


參考文章:
https://www.liaoxuefeng.com/w...

相關文章
相關標籤/搜索