本文由 赤石俊哉 原創編寫,您能夠在學習交流用途之內自由使用文章。
可是禁止抄襲文章,轉載時,請註明來源地址,謝謝。
最後更新時間: 2017年11月24日 17:53:15python更多文章能夠參見 小赤石的Code Spacelinux
4. 使用 virtualenv 建立工程目錄segmentfault
本文默認您已經完成了如下工做的狀況:瀏覽器
1. 安裝完成了 Visual Studio Code。 2. 安裝完成了 Python 3.6.3 而且將 Python 添加到系統變量 PATH 中。
運行 vscode,按下 Ctrl
+ P
,會打開一個輸入框,輸入 ext install python
,就會進入擴展商店,搜索 python
。
咱們須要的是發行者爲 Microsoft
的那一個名爲 Python
的擴展。點擊 安裝
按鈕,安裝完成以後,點擊 從新加載
。安全
下面是各個包的簡單說明,若是您足夠了解的話,能夠直接跳轉到 安裝過程
小節。app
摘自:廖雪峯的官方網站 - virtualenvide
在開發 Python 應用程序的時候,系統安裝的 Python3 只有一個版本:3.4。全部第三方的包都會被
pip
安裝到Python3的site-packages
目錄下。
若是咱們要同時開發多個應用程序,那這些應用程序都會共用一個 Python,就是安裝在系統的 Python 3。
若是應用 A 須要 jinja 2.7,而應用 B 須要 jinja 2.6 怎麼辦?
這種狀況下,每一個應用可能須要各自擁有一套「獨立」的 Python 運行環境。virtualenv
就是用來爲一個應用建立一套「隔離」的 Python 運行環境。工具
摘自:如何使用 Pylint 來規範 Python 代碼風格
Pylint 是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合代碼風格標準(Pylint 默認使用的代碼風格是 PEP 8,具體信息,請參閱參考資料)和有潛在問題的代碼。
簡單的來講,Pylint 爲咱們提供了糾錯的功能,若是你但願在你的代碼中,及時發現標註波浪線的錯誤,請安裝它。
摘自:有哪些命令行的軟件堪稱神器? - int32bit的回答 - 知乎
Google開發的python代碼格式規範化工具,支持pep8以及Google代碼風格。
簡單的說, yapf 爲咱們提供了格式化代碼的功能,若是你但願在你的代碼中,使用 Alt
+ Shfit
+ F
來自動格式化你的 Python 代碼,請安裝它。
使用下面的命令依次安裝他們:
pip install virtualenv pip install pylint pip install yapf
下面總結一下,筆者在安裝中出現過的問題,以及解決方法。
這個也是一個比較常見的問題,遇到這個問題時,能夠參考錯誤中的倒數第三行中的路徑:
... 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
改爲對應你的文件名。
打開 vscode,進入 文件 > 首選項 > 設置,按照下面的註釋修改對應的值。
// 若是使用 pylint, 設置下面的爲 true。若是使用其餘語法糾錯的庫,能夠將對應的設置爲 true,其餘的設置爲 false。 "python.linting.pylintEnabled": true // 若是安裝了 yapf,而且但願使用 yapf 格式化代碼的,請修改下面的選項。 "python.formatting.provider": "yapf"
爲每個 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 .
打開 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" ] } ] }
保存並關閉。
使用 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!
顯示。
到此,咱們的環境配置就完成了。