首页 > 其他分享 >虚拟环境 venv的使用--(venv 一)

虚拟环境 venv的使用--(venv 一)

时间:2023-02-23 16:55:42浏览次数:51  
标签:venv 项目 -- 环境 Python 虚拟环境 PyCharm

一、引言
最近在学习《Flask Web Development 2nd Edition》的时候,作者开篇就介绍如何使用 venv 来管理 Python 环境 。
自我觉得作者讲的非常好,想要将其总结下来,方便自己日后查询,也方便各位学习 Python 的同学一起学习。

众所周知,项目的环境管理一直是比较头疼的问题,如果有两个项目,一个用的是 a 库的 v1 版本,一个用的是 a 库的 v2 版本,那么如果 a 库是安装在系统环境下的,就会出现项目所依赖的库文件版本不对的问题。

Python 社区为了解决这个问题,提出了虚拟环境的概念。也就是人为的创建一个虚拟环境供项目运行,而该项目需要什么库文件,则自行在这个虚拟环境中下载安装,而在虚拟环境中下载安装的库文件,是不会影响到系统环境中的库文件的。
有了虚拟环境的概念, Python 的项目管理也就不那么麻烦了。

接下来,我来总结下如何使用 Python 的虚拟环境。

ps: 以下的讲解都是在 Python3 的前提之下。

二、venv
鉴于 Python3 中以标准库的形式包含了 venv 工具,因此就不再讲解 venv 工具的安装了。

不过 Ubuntu 环境是需要自行下载安装的,运行命令如下:

 

 

$ sudo apt-get install python3-venv
1
1. 创建虚拟环境
这里,假定你已经拥有了 venv 工具,我们直接打开命令行工具

Windows 平台下运行:

 

 

py -3 -m venv venv 或 python -m venv venv
1
MacOS 或者 Linux 平台下运行:

 

 

python3 -m venv venv
1
运行完这行命令,应该可以在当前目录下看到新建的一个文件夹,名为 venv,其就是虚拟环境的名称,并且以后我们在虚拟环境中所有的操作以及下载的库文件,都会在这个文件夹中。

 

 

2. 激活虚拟环境
创建了虚拟环境却没有激活的话,你还是处于系统环境中。怎么激活虚拟环境呢?

Windows 平台下运行:

 

 

venv\Scripts\activate 或 cd venv\Scripts | activate
1
MacOS 或者 Linux 平台下运行:

 

 

source venv/bin/activate
1
这里 venv 是你的虚拟环境的名字。运行完之后,自动会刷新命令行界面,以括号内嵌虚拟环境名字的形式提示用户,现在是处于 venv 虚拟环境中。

 

 

3. 使用虚拟环境
虚拟环境除了 Python 一些核心的包、pip 工具等等,其他都没有,因此,当前项目需要什么,则使用 pip 工具下载即可。

其他的使用方法,与系统环境下的使用没有什么不同。

4. 退出虚拟环境
退出虚拟环境很简单,各平台都是一样的:

 

 

deactivate
1
从虚拟环境中退出到系统环境是很明显的,因为前面的虚拟环境名称提示符消失了。

 

 


三、在 PyCharm 中配置当前项目虚拟环境
venv 是很好用,但是我们该如何在 PyCharm 中配置当前项目所使用的环境呢?
1. 进入 Project Interpreter 界面
我们打开 PyCharm,菜单栏选择 File,点击 Settings,进入到设置界面,然后配置 Project Interpreter

 

 

2. 添加虚拟环境
在 Project Interpreter 文本框右侧点击齿轮按钮,点击 Add。

 

 

然后,选择 Virtualenv Environment 标签卡,选择 Existing enviroment(选择上面那个应该可以直接新建一个环境,这里为了续接上一节中的环境,则直接选择了已存在的环境),这里,如果 PyCharm 没有找到你新建的环境,则需要你自己去打开文件找到你虚拟环境中的 Scripts 目录下的 python.exe 解释器文件。
3. 测试运行
最后点击 OK,即可看到环境列表多了一行。这里,我们可以在项目中切换各个环境进行自己当前项目的测试,还是很方便的。

四、总结
不得不说,venv 还是给了我不少的惊喜。也就像《Flask Web Development 2nd Edition》的作者所说的:

在系统环境中,使用最基本的 Python 解释器提供虚拟环境 venv
的功能,然后在各个虚拟环境中完成我们的项目,这样是比较好的项目组织方式

上述话语是意译,我也比较认可作者的这一个看法,这样能让我们的系统环境非常的干净,却又能够非常好的管理各个项目。

不过同样的话,《Head First Python 2nd Edition》的作者也说过:

标签:venv,项目,--,环境,Python,虚拟环境,PyCharm
From: https://www.cnblogs.com/Yusco/p/17148677.html

相关文章

  • 我可以从构造函数中调用虚函数吗?
    是的,但要小心。它可能不会做你期望的。在构造函数中,虚拟调用机制被禁用,因为从派生覆盖课程还没有发生。对象是从基础向上构建的,“派生前的基础”。考虑到#include<......
  • 存储过程
    什么是存储过程?用什么来调用?答:存储过程·是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQ......
  • 【字符串】KMP算法
    KMP算法(Knuth-Morris-Pratt算法)是一个著名的字符串匹配算法,效率很高。例题28.找出字符串中第一个匹配项的下标-力扣(Leetcode)BF(Brute-Force)算法:暴力解法BF算法采用......
  • 使用shell判断文件夹中是否包含文件
    #!/bin/bashdirectory="/path/to/directory"if[$(ls-A$directory)];thenecho"有文件"#执行指定shell脚本sh/path/to/script.shelseecho"没有文......
  • 16.数组使用
    数组使用1.打印全部元素int[]arrays={1,2,3,4,5};for(inti=0;i<arrays.length;i++){System.out.println(arrays[i]);}//强化for循环,这个循环中的元......
  • Astute Graphics for Mac(全系列ai插件合集)支持ai 2022/2023
    哪里可以下载ai插件AstuteGraphics?今天macw小编为大家带来的是包含了AstuteGraphics出品的全系列21套AI插件:astutegraphics破解版下载。其中包含了包括颜色控制、图形剪......
  • 对于UniWebView这种组件违规获取信息的处理
    对于UniWebView这种组件违规获取信息的处理UniWebView这个组件,原本是用来在Unity里使用浏览器来显示网页信息,但这个组件它自己不安份,偶尔去获取设备的敏感信息,经常导致不......
  • 15.数组
    数组1.数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可......
  • 【人脸检测】(MTCNN) Joint Face Detection and Alignment using Multi-task Cascaded
    原始题目JointFaceDetectionandAlignmentusingMulti-taskCascadedConvolutionalNetworks中文名称基于多任务级联卷积网络的联合人脸检测与对齐......
  • shell 中将 .txt 转换为 .csv
    linux-在shell中将.txt转换为.csv-IT工具网(coder.work)最佳答案只有sed,没有别的sed's/\+/,/g'ifile.txt>ofile.csv文件目录.csv1,4,22.0,3.3,2.3......