Python VScode 配置虚拟环境(virtualenv)
Python 虚拟环境
Python 之所以强大,除了语言本身的特性外,更重要的是拥有无所不及的第三方库。强大的软件库,让开发者将精力集中在业务上,而避免重复造轮子的浪费。但众多的软件库,形成了复杂的依赖关系,加上 Python2 和 Python3 旷日持久之争,对采用 Python 开发的项目造成了不少困扰,所以 Python 建议,通过
虚拟环境
工具为项目创建纯净的依赖环境Python 应用经常需要使用一些包第三方包或者模块,有时需要依赖特定的包或者库的版本,所以不能有一个能适应所有 Python 应用的软件环境,很多时候不同的 Python 应用所依赖的版本是冲突的,满足了其中一个,另一个则无法运行,解决这一问题的方法是 虚拟环境。虚拟环境是一个包含了特定 Python 解析器以及一些软件包的自包含目录,不同的应用程序可以使用不同的虚拟环境,从而解决了依赖冲突问题,而且虚拟环境中只需要安装应用相关的包或者模块,可以给部署提供便利
构建虚拟环境
原理
虚拟环境并不是什么新技术,主要是利用了操作系统中环境变量以及进程间环境隔离的特性
操作系统的环境变量可以为程序提供信息和做信息交换介质,进程可以共享操作系统中的环境变量,也可以为进程指定环境变量,其中 PATH 是很重要的环境变量,用于为操作系统和程序提供可执行文件的访问路径,例如写一个程序 a.exe,存放在 D:\MyProgram 中,在命令行中执行 a.exe ,会得到提示“ 无法找到程序 a.exe”,为了让系统找到,可以将 D:\MyProgram 路径加入到 PATH 环境变量中,当输入 a.exe 时,操作系统就会从 PATH 所提供的路径中逐个查找,这时就可以找到了。Linux 和 MacOS 具有相似的特性,甚至比 Windows 的功能更丰富。
Python 虚拟环境就是利用这个特性构建的,在激活虚拟环境之时,激活脚本会将当前命令行程序的 PATH 修改为虚拟环境的,这样执行命令就会在被修改的 PATH 中查找,从而避免了原本 PATH 可以找到的命令,从而实现了 Python 环境的隔离。
为了让开发容易区分当前环境是否虚拟环境以及是那个虚拟环境,命令提示符前会加上特殊标记,例如:
通过virtualenv 工具构建(Python3.3之前)
在 python3.3 之前,只能通过 virtualenv 创建虚拟环境,首先需要安装 virtualenv
pip install virtualenv
安装完后,在你需要创建虚拟环境的项目目录下创建一个名为 myvenv 的虚拟环境:
virtualenv --no-site-packages myvenv
参数
--no-site-packages
的意思是创建虚拟环境时,不复制主环境中安装的第三方包,也就是创建一个 “干净的” 虚拟环境virtualenv 还有很多参数,用于不同的使用场景,例如:
-p: 用于指定 Python 解析器,就是安装好的 Python 应用程序,默认为当前环境中的 Python
--no-pip:不需要安装 pip,默认为安装
--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建
通过venv模块构建(Python3.3以后)
Python3.3 之后,可以用模块 venv 代替 virtualenv 工具,好处是不用单独安装,3.3 及之后的版本,都可以通过安装好的 Python 来创建虚拟环境:
python -m venv myvenv
可以在当前目录创建一个名为 myvenv 的虚拟环境
venv 有些参数,不过相比 virtualenv 少了些,这里简单介绍几个:
--without-pip: 不需要安装 pip,默认为安装
--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建
因为 venv 是依附于一个 Python 解析器创建的,所以不需要指定 Python 解释器版本
激活venv
虚拟环境创建好后,需要激活才能在当前命令行中使用,可以理解成将当前命令行环境中 PATH 变量的值替换掉
通过 virtualenv 和 模块 venv 创建的虚拟环境,激活方式是一样的,即运行激活脚本
Windows 系统:
激活方式
1.命令行提示符(
<myvenv>
是你自己的虚拟环境目录)<myvenv>\Scripts\activate.bat
2.powershell 命令行(
<myvenv>
是你自己的虚拟环境目录)<myvenv>\Scripts\activate.ps1
也可以之间进入到activate.bat的目录下直接输入activate.bat激活
powershell下直接输入 .\activate.ps1直接激活
退出venv
退出虚拟环境很简单,只需要执行 deactivate
命令就行,这个命令也在虚拟环境的脚本目录下,因为激活时,将脚本目录设置到 PATH 中了,所以可以直接使用
deactivate
退出虚拟环境相当于将 PATH 恢复成原来的
与开发工具配合
虽然通过激活脚本,很容易切换到虚拟环境,但是在实际开发中,还是不够方便,而且现在很多开发工具,特别是提供 Python 解析环境的开发工具,都可以和虚拟环境配合,在开发过程中几乎无感,对开发工作是很大的帮助
Visual Studio Code
VS Code 是个后起之秀,功能强大且具有丰富的插件资源,无疑是这两年发展最快的综合开发工具。现在的版本配置 Python 虚拟环境很简单,只需要选择一个 Python 解释器就好了
- 同时按下 Ctrl+Shift+P, 在弹出的命令窗口中输入 "解析器",
- 然后在下拉列表中选择 "Python:选择解析器",这里会缓存一些已经创建好的解析器,
- 如果没有想要的,可以选择 "Enter interpreter path" 来选择解析器路径,即已经创建好的虚拟环境脚本文件夹中的 Python 程序,就可以创建一个新的解析器
选择 Python 解析器
如果编辑的是 Python 代码文件,在状态栏中也可以选择和切换解释器,更为方便
部署虚拟环境流程
之所以在开发时选择虚拟环境,除了避免库之间的冲突,还有重要的原因是方便部署,因为虚拟环境是独立的,仅包含了项目相关的依赖库,所以部署的效率更高,风险更小
一般部署流程是:
开发完成后,使用
pip freeze > requirements.txt
命令将项目的库依赖导出,作为代码的一部分将代码上传到服务器
在服务器上创建一个虚拟环境
激活虚拟环境,执行
pip install -r requirements.txt
,安装项目依赖
怎么运行项目,需要看项目的具体情况
Web 项目 Web 项目一般使用 Django、Flask 的 Web 开发的提供 Web 服务的项目,部署时需要一个 Web 容器,作为程序的运行环境,容器的配置中都有一个虚拟环境的设置,其实是指定 Python 解析器的路径,将其设置为虚拟环境的目录或者 Python 解析器就可以了,启动时就用使用虚拟环境,并与其他环境隔离。例如 uWSGI 配置文件中 home 参数是用来指定解析器的。
服务类项目 服务类项目就是需要以服务的形式长时间运行的,例如之前介绍的 公交闹钟,或者一些定时爬虫之类的,对于 Linux 而言,当前主流的服务方式是 Systemd,是一种比 init 更先进的服务管理工具,在服务脚本中, 设置 ExecStart 执行命令为全路径的虚拟环境的 Python 解析器,服务启动时,使用独立的虚拟环境了。Windows 服务,对于达成 EXE 包的,不需要配置虚拟环境,因为打包时已经考虑了环境问题了,如果是脚本运行的话,需要指定全路径的 Python 解析器
单次运行项目 对于一些测试或者实验性质的项目,大多数情况下手动执行,只要在激活的虚拟环境下,或者用特定的 Python 解析器运行就好了,和在开发过程中运行区别不大
其他虚拟环境管理工具
virtualenvwrapper:是对 virtualenv 的一个封装,还有针对 vim 用户和 emacs 用户的 扩展,能支持 bash/ksh/zsh
virtualenvwrapper-win:针对 Windows batch shell 的 virtualenvwrapper
pyenv:用来解决这类问题。它可以安装、卸载、编译、管理多个 python 版本,并随时将其中一个设置为工作环境
pyenv-win:针对 Windows 的 pyenv
有兴趣的话可以试用一下
Python VScode 配置虚拟环境(virtualenv)相关推荐
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...
- mac安装python虚拟环境_详解Mac配置虚拟环境Virtualenv,安装Python科学计算包
最近正在自学Python做科学计算,当然在很多书籍和公开课里最先做的就是安装Numpy, Scipy, Matplotlib等包,不过每次安装单独的包时,都会有各种问题导致安装失败或者调用失败. 比如 ...
- python 使用安装虚拟环境 virtualenv
目录 1.安装virtualenv 2.Ubuntu使用python3创建虚拟环境目录 3.激活虚拟环境 4.关闭虚拟环境 5.查看python版本 1.安装virtualenv pip instal ...
- vscode运行虚拟环境virtualenv时报错:\Scripts\Activate.ps1,因为在此系统上禁止运行脚本
Windows PowerShell 版权所有 (C) Microsoft Corporation.保留所有权利.尝试新的跨平台 PowerShell https://aka.ms/pscore6PS ...
- Python中的虚拟环境-virtualenv
更低层次: virtualenv virtualenv 是一个创建隔绝的Python环境的 工具.virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包. 它可 ...
- Jetson nano : 配置虚拟环境virtualenv。
Anaconda官方不支持aarch64架构,所以Jetson nano不能直接使用Anaconda,可以使用Archiconda或者virtualenv. 简单说说virtualenv使用. 安装p ...
- ubuntu中vscode配置python_ubuntu下vs code的python虚拟环境的配置
0.pyhton3 用venv配置虚拟环境 原本因为ubuntu desktop 1804自带了的python3已经有了venv,我记得ubuntu server 1804是有venv的 结果运行,提 ...
- Python的虚拟环境配置(pyenv+virtualenv)
一.为什么需要配置虚拟环境 Python 2和Python 3之间存在着较大的差异,并且,由于各种原因导致了Python 2和Python 3的长期共存.在实际工作过程中,我们可能会同时用到Pytho ...
- Vscode配置Python虚拟环境
1.在Vscode中打开终端 2.windows输入python -m venv 虚拟环境名 如 python -m venv env Mac输入python3 -m venv 虚拟环境名 如 pyt ...
最新文章
- cocos2dx基础篇(9)——触碰事件Touch
- 平均值,方差计算(sss)
- python opencv输出mp4_10分钟学会使用YOLO及Opencv实现目标检测
- linux卸载gdb命令,【Linux学习】GDB调试器基本命令必知必会(一)
- ConcurrentProgramming:wait()和notify()和synchronized
- WCF 第二章 契约 系列文章
- 求助(十万火急):关于httpwebrequest发送请求绑定ip的问题.
- [基础]sizeof和strlen
- 带你看JDK源码之HashMap
- 客户分段模型(Customer Segmentation Models)
- Anti-alias的前世今生-常用反走样算法总结
- centos7 oracle11gR2安装
- Oracle:ORA-00054 资源正忙 -- 锁表的解决方法
- mac风扇控制_如何监视和控制Mac的风扇
- 快速保存网页资料——fireshot与PDFdownload
- windowsmobile软件_经验:CSPJ/S初赛知识点整理(NOIP硬件与软件基础)
- MPAndroidChart的详细使用——BarChart叠状条形图(四)
- Mac 开机密码忘记
- 老李分享:JAVA性能监控工具
- ESP8266WiFi模块AT指令入门指南
热门文章
- 适用于人工智能开发的编程语言,主要有哪些?
- 阿里云负载均衡SLB,HTTPS动态网站部署负载均衡,实现高并发流量分发
- DNS解析及负载均衡
- 前轮转向中的数学模型
- 使用JVMTI实现Java源码加密及SpringBoot项目包加密解决方案实践总结
- php免费加密hp源码加密,HP源码加密工具(php-beast)php7版下载
- alertdialog报错_AlertDialog异常:Resources$NotFoundException: Resource ID #0x0 in AlertDialog
- 一款强大的芯片nRF52840及利用蓝牙5.0实现数据远程采集
- mitmproxy 使用
- 鉴机:粉丝买了一台宝峰uv5r对讲机,竟是假的?