关于Python,虚拟环境和Visual Studio Code集成的说明
目录
介绍
背景
多少个Python?
多种解释器
多个软件包安装程序
多个搜索路径
虚拟环境
创建一个虚拟环境
激活虚拟环境
在虚拟环境中安装软件包
PIP冻结
VSC集成
Flask & Gunicorn
使用Nginx进行负载平衡
- 下载源17.5 KB
介绍
这是有关Python&Virtualenv&Visual Studio Code 的说明。
背景
Python被认为是一种易于学习且易于使用的语言,但是本说明与Python语言无关。这是关于创建一个隔离的环境,使我们可以确定地运行Python程序。
在本说明中,我附加了一些简单的Python文件。我将使用它们向您展示拥有一个隔离的环境来运行Python程序的好处。
多少个Python?
要运行Python程序,通常在计算机上需要3个组件。
- Python解释器
- Python软件包安装程序(pip)的实例,用于安装依赖项软件包
- 解释器寻找依赖包以运行我们的程序的搜索路径
多种解释器
Python宣称的优势之一是,它在所有计算机上都可以轻松获得。这也意味着我们可能不知道就拥有一个版本的Python解释器。在我的Linux Mint 17.2 Cinnamon 64位中,我至少有3个Python解释器。
当我们安装操作系统时,它会附带某些预先安装的Python解释器。这些Python解释器对于操作系统正常运行很重要。我们不应该在不确切知道我们正在做什么的情况下删除它们。
多个软件包安装程序
为了使事情变得更复杂,我们实际上在计算机上有多个pip实例。
多个搜索路径
在运行Python程序时,我们需要确保使用了正确的解释器实例。让我们看一下“python-search-path.py”文件。
# https://docs.python.org/3/tutorial/modules.html#the-module-search-path
import sysfor item in sys.path:print(item)
如果通过以下命令运行程序,则可以找到“python”解释器使用的包搜索路径。
python python-search-path.py
如果我们通过“python3.4”解释器运行它,我们将看到完全不同的路径。
python3.4 python-search-path.py
现在我们知道计算机上的Python版本很复杂。更不稳定的是,我们可能使用的操作系统也使用相同版本的Python。如果我们更新操作系统也使用的某个程序包,则可能会导致操作系统出现问题。在最坏的情况下,它甚至可能无法启动。在使用某些版本的Python之后,我个人在操作系统上遇到了问题。
虚拟环境
我们可以努力工作,以确保我们正在使用所需的Python解释器。我们还可以努力将软件包安装到正确的搜索路径中,以使Python程序平稳运行。但是我们也可以创建一个虚拟环境来轻松确定地运行Python程序。
- 虚拟环境可确保我们使用所需的Python解释器。
- 虚拟环境可确保我们使用所需的Python软件包安装程序(pip)。
- 虚拟环境可确保我们在环境中安装软件包,并在运行程序时在环境中寻找它们。
从物理上讲,虚拟环境是一个文件夹。这个文件夹几乎包含所有运行Python程序的内容。当我们安装软件包时,它也安装在此文件夹中。
创建一个虚拟环境
要创建虚拟环境,我们需要安装“virtualenv”工具。在计算机上,我使用以下命令安装“virtualenv”。
sudo python3 -m pip install virtualenv
然后,我们可以验证安装是否成功。
安装“virtualenv”后,我们可以通过以下命令创建虚拟环境:
virtualenv -p /usr/bin/python3.4 environment-3.4
- 创建虚拟环境时,我们指定了Python解释器的执行路径,当我们使用虚拟环境时,它将是python解释器。
- 创建虚拟环境时,我们指定了文件夹名称。它是保存虚拟环境的物理文件夹。
激活虚拟环境
要激活虚拟环境,我们可以发出以下命令:
source environment-3.4/bin/activate
激活虚拟环境后,我们可以检查Python和pip的执行路径。
python python-search-path.py
激活虚拟环境后,我们可以看到所有python,pip和搜索路径都位于虚拟环境文件夹内。我们可以通过以下命令停用虚拟环境:
deactivate
如果要完全删除虚拟环境,我们可以简单地删除“environment-3.4”文件夹。
在虚拟环境中安装软件包
出于实验目的,我在“python-flask-api.py”文件中创建了一个小的“flask”应用程序。
from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/')
def message():name = 'Song Li'return jsonify(username = name,email = 'song.li@email.com',)if __name__ == '__main__':app.run(host='0.0.0.0', port=3000)
此应用程序需要“flask”软件包。激活虚拟环境后,我们可以使用以下命令来安装软件包:
python -m pip install flask
安装“flask”后,我们可以运行“python-flask-api.py”文件。
python python-flask-api.py
我们可以通过运行“python-inspect-path.py”文件来进一步验证虚拟环境中是否安装了“flask”软件包。
import inspect
from flask import Flaskprint(inspect.getfile(Flask))
PIP冻结
在虚拟环境上工作一段时间后,您可能已经安装了许多软件包。如果要让其他人运行您的程序,则需要告诉他们这些软件包和版本。激活虚拟环境后,可以发出以下命令:
python -m pip freeze > requirements.txt
它创建一个名为“requirements.txt”的文件,其中包含有关虚拟环境中软件包的所有信息。
Click==7.0
Flask==1.0.4
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.1
我们可以使用以下命令在新的虚拟环境中安装所有软件包:
python -m pip install -r requirements.txt
我们还可以通过以下命令删除“requirements.txt”文件中的所有软件包:
python -m pip uninstall -r requirements.txt -y
VSC集成
Visual Studio Code是用于Python程序的不错的IDE。如果您不熟悉VSC,可以看一下我以前的笔记。为了支持Python,我只需要安装Microsoft的Python扩展。
为了能够在虚拟环境中使用Python解释器运行和调试程序,我们可以简单地创建一个“launch.json”文件,如下所示。它将“pythonPath”指向虚拟环境。
{"version": "0.2.0","configurations": [{"name": "python-search-path.py","pythonPath": "${workspaceFolder}/environment-3.4/bin/python","type": "python","request": "launch","program": "${workspaceFolder}/python-search-path.py","console": "integratedTerminal"},{"name": "python-inspect-path.py","pythonPath": "${workspaceFolder}/environment-3.4/bin/python","type": "python","request": "launch","program": "${workspaceFolder}/python-inspect-path.py","console": "integratedTerminal"},{"name": "python-flask-api.py","pythonPath": "${workspaceFolder}/environment-3.4/bin/python","type": "python","request": "launch","program": "${workspaceFolder}/python-flask-api.py","console": "integratedTerminal"}]
}
如果愿意,您实际上可以在“settings.json”文件中将路径添加到python可执行文件。
{"files.exclude": {"**/.git": true,"**/.gitignore": true,"**/environment-3.4": true},"python.pythonPath": "${workspaceFolder}/environment-3.4/bin/python3.4"
}
在这种情况下,无论何时打开终端,虚拟环境都会自动激活。
Flask & Gunicorn
Flask和 Django是在Python环境中的web框架。“python-flask-api.py”是一个简单的flask应用程序。
import sys, os
from flask import Flask, jsonifyapp = Flask(__name__)@app.route('/')
def message():return jsonify(pid = os.getpid())if __name__ == '__main__':app.run(host='0.0.0.0', port=3000)
我们可以通过以下命令启动该应用程序。
python python-flask-api.py
但是,当我们启动应用程序时,我们看到以下警告。
我们需要找到一个好的服务器来托管应用程序。我们有很多选择,但Gunicorn是受欢迎的选择。实际上,我们可以在虚拟环境中安装 Gunicorn。
python -m pip install gunicorn
安装Gunicorn之后,我们可以在虚拟环境中运行它。
gunicorn --bind 0.0.0.0:8000 python-flask-api:app
如果一切顺利,我们现在可以通过“8000”端口号访问该应用程序。我们还可以添加“-w”选项以指定工作进程数。通常,服务器中每个内核的工作进程数为2-4。
gunicorn --bind 0.0.0.0:8000 -w 4 python-flask-api:app
使用Nginx进行负载平衡
Nginx是一种流行的负载平衡器。通常使用Nginx对多个Flask实例进行负载平衡。要在我的Linux Mint计算机上安装Nginx,我们可以使用以下命令。
apt-cache policy nginx
sudo apt-get install nginx
安装后,我们可以使用以下命令来操作Nginx服务器。
sudo service nginx start
sudo service nginx restart
sudo service nginx reload
sudo service nginx stop
service nginx status
因为我正在个人计算机上试验Nginx,所以我不想在启动计算机时启动它,所以我使用以下命令禁用该服务。
sudo update-rc.d nginx disable
为了设置负载平衡,我创建了一个名为“loadbalance.conf”的文件。
upstream pythonweb {server localhost:4000;server localhost:3000;server localhost:2000;
}# This balances all the requests
# It also disable caching
server {listen 80;location / {proxy_pass "http://pythonweb/";add_header Cache-Control'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';}
}# nginx.conf file
# Comment out this line - include /etc/nginx/sites-enabled/*;
#include /home/song/sandbox/p-virtualenv-excercise/loadbalance.conf;
在我的计算机中,我需要将该文件“包含”在“/etc/nginx/nginx.conf”文件中,并注释掉默认的“/etc/nginx/sites-enabled/*”。
#include /etc/nginx/sites-enabled/*;
include /home/song/sandbox/p-virtualenv-excercise/loadbalance.conf;
准备好配置后,我们可以重新启动或重新加载Nginx服务器。我们还需要在不同终端的端口号2000/3000/4000上启动Flask应用程序的3个实例。以下是在端口号2000上启动实例的命令。
gunicorn --bind 0.0.0.0:2000 python-flask-api:app
如果一切顺利,则可以通过端口号80访问应用程序,并且在3个Flask实例之间平衡请求。
关于Python,虚拟环境和Visual Studio Code集成的说明相关推荐
- vscode 离线安装python插件_vscode for Python插件下载-Visual Studio Code Python插件下载0.9.1 官方版-西西软件下载...
Visual Studio Code免费编程工具可以进行python开发学习,当然Python本身的安装也是必须的,打开VisualStudioCode,按下Ctrl+P打开命令行,然后输入ext i ...
- visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
An Old Hope Theme (theme, 推荐,且推荐它的 classic theme,安装后在颜色选项里选择,该插件的定制见文末) Cobalt2 (theme) Drac ...
- azure web应用部署_使用Visual Studio Code将Python应用程序部署到Azure Functions
azure web应用部署 In this article, we are going to build a small python application and deploy it to Azu ...
- 使用跨平台的visual studio code 进行python 开发
文章大纲 简介 安装扩展参考 安装python 扩展 设置终端 环境基本设置 工程化设置 Visual Studio Code 添加文件头注释 Visual Studio Code自动添加函数注释模板 ...
- visual studio code Python终端运行_黄哥Python:VS Code 10个Python 插件
转载自 https://medium.com/issuehunt/10-visual-studio-code-extensions-for-python-development-de0be51bbee ...
- java visual linux,如何在 Linux 中安装 Visual Studio Code
你们好,今天咱们一块儿来学习如何在 Linux 发行版中安装 Visual Studio Code.Visual Studio Code 是基于 Electron 优化代码后的编辑器,后者是基于 Ch ...
- 在linux安装编译vscode,Linux中安装 Visual Studio Code 详解
一起来学习如何在 Linux 发行版中安装 Visual Studio Code.Visual Studio Code 是基于 Electron 优化代码后的编辑器,后者是基于 Chromium 的一 ...
- visual studio 与 visual studio code
Visual Studio Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具, ...
- visual studio 和visual studio code 的区别
区别有三: 区别一:含义不一样. Visual Studio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码 ...
最新文章
- 关于刘冬大侠Spring.NET系列学习笔记3的一点勘正
- 区块链教程Fabric1.0源代码gRPC(Fabric中注册的gRPC Service)一
- glib中的GList ,GSList,GString,GTree,GTimer
- 【CodeForces - 527C】Glass Carving(线段树或者SBT或者set)
- 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
- 删除一行下方单元格上移_openpyxl3.0官方文档(5)——插入和删除行和列,移动单元格...
- 在Linux 安装Python3.5.6详细文档!!!!
- 深夜不睡的我爬取一下美女照片!!!哈哈!!来吧,刺激磁刺激!!!
- matlab griddata外插,matlab griddata方法使用介绍
- 服务器网卡无法开启lldp协议,lldp支持-VMware vSphere - 思科华为论坛
- 位移的单位符号_初中物理符号级单位符号公式大全
- win10右键文件夹转圈卡死
- js使用canvas画布画太极图案
- 【.net函数式编程】可重复的执行repeatable execution
- 互联网春招和秋招的区别
- 透过容抗来看电容量和频率的关系
- 新一代红米参数模糊的背后 是否有欺诈嫌疑?
- 别找了,这就是你想要的年会抽奖开源项目
- 如何在Digital Ocean VPS上安装cpanel / whm
- codeception 运行testcase 的方式
热门文章
- python读yaml的库_Python读取YAML文件过程详解
- mysql的count函数类型是什么意思_详细解读MySQL中COUNT函数的用法
- 从第一范式到第二范式所做的操作是_数据库设计三大范式
- 设计师交流平台!!!
- 极简主义2020UI设计正流行,欣赏下可临摹的案例模板!
- 一流设计师导航|16map,一款强大且智能的设计师导航网站
- 设计干货栅格系统素材 | UI设计师应用好帮手
- 图解Http学习第二章
- Index of /pub/software/graphics/pngtoico/
- eBPF bpftrace 实现个UNIX socket抓包试试