本文由 赤石俊哉 原创编写,您能够在学习交流用途之内自由使用文章。
可是禁止抄袭文章,转载时,请注明来源地址,谢谢。
最后更新时间: 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!
显示。
到此,咱们的环境配置就完成了。