首页 > 编程语言 >Python之虚拟环境venv实战详解

Python之虚拟环境venv实战详解

时间:2023-04-15 18:57:20浏览次数:43  
标签:virtualenv venv Python env1 python 虚拟环境 env pip

 

安装配置虚拟环境virtualenv

  官方给出的建议是最好在一开始就创建虚拟环境。在不同环境下,我们使用不同命令,即可创建出一个名为venv的虚拟环境
  最简的方式是使用python指令之间创建

# windows
python -m venv venv
#linux/macos
python3 -m venv venv

Windows

重点讲解使用virtualenv创建虚拟环境

pip install virtualenv #安装最新的版本
pip install virtualenv==20.2.1  #指定virtualenv 的版本
pip install -i https://pypi.doubanio.com/simple/ virtualenv==20.2.1

# 测试否时安装成功
virtualenv --version

创建虚拟环境
关于系统默认的python环境,如果你的Windows中只装了一个python,那么这个python环境肯定就是默认的了!但如果你一个系统上配置了多个python环境,也就是多版本共存,那么肯定有个是你默认的python环境。
直接使用virtualenv创建虚拟环境。

D:\env> virtualenv env1

上例,在D:\env目录下,创建一个名为env1的虚拟化境,这个虚拟环境相当于将系统默认的python环境拷贝了一份,只是没有拷贝其中的第三方包。
当你的虚拟环境创建成功后,它的主要目录结构是这样的,其中我们只关注重要的即可:

D:\env\env1                   # env1中的主要目录和文件
├─Lib                         # 依赖包目录,必要的工具
│  └─site-packages            # 将来安装的第三方包也在这个目录中
│      ├─pip
│      ├─pip-20.2.4.dist-info
│      ├─pkg_resources
│      ├─setuptools-50.3.2.dist-info
│      ├─wheel
│      ├─wheel-0.35.1.dist-info
│      └─_distutils_hack
└─Scripts                   # 一些可执行程序
    ├─activate.bat          # 启动虚拟环境
    ├─deactivate.bat        # 关闭虚拟环境
    ├─python.exe            # python解释器
    ├─pip.exe               # 包管理工具 pip 推荐使用
    ├─easy_install.exe      # 包管理工具 easy_install 用的不多了
    └─wheel.exe             # 包管理工具 wheel 用的也不是很多,但有机会用上

如果配置了多个python版本,且这个虚拟环境有需要指定的python环境,那么创建时要加参数了:

D:\env> virtualenv --python=python27 env2

--python参数指定python版本。

使用
开启虚拟环境:activate
当你创建好了虚拟环境之后,想要使用需要开启:

D:\env>env1\Scripts\activate.bat

(env1) D:\env>

activate.bat脚本负责启动当前的虚拟环境,启动成功后,命令行前会有个括号包着虚拟环境名,标示接下来的关于python的操作都基于当前虚拟环境。

(env1) D:\env>python -V
Python 3.6.6

(env1) D:\env>pip -V
pip 20.2.4 from D:\env\env1\lib\site-packages\pip (python 3.6)

(env1) D:\env>pip list
Package    Version
---------- -------
pip        20.2.4
setuptools 50.3.2
wheel      0.35.1

由上面的示例可以看到,此时的虚拟环境是一个独立、干净的python环境。
我们可以在这个虚拟环境中,下载包、运行脚本等等都可以,来下个包试试:

(env1) D:\env>pip install requests
(env1) D:\env>pip list
Package    Version
---------- ---------
certifi    2020.11.8
chardet    3.0.4
idna       2.10
pip        20.2.4
requests   2.25.0
setuptools 50.3.2
urllib3    1.26.2
wheel      0.35.1

可以看到成功的将requests模块下载到了当前的虚拟环境中。
关闭虚拟环境:

(env1) D:\env>env1\Scripts\deactivate.bat
D:\env>

deactivate.bat脚本负责退出当前的虚拟环境。退出虚拟环境后,命令行前的括号也没有了。后续的python操作都使用的系统的python环境了。

删除虚拟环境
这没啥好说的,从磁盘的目录中找到env1这个虚拟环境(其实也就是个目录),右键删除即可。

Linux

Linux中也可以使用虚拟环境,套路跟Windows中差不多,也是要提前配置好python环境。

[root@cs ~]# pip3 install -i https://pypi.doubanio.com/simple/ virtualenv==20.2.1

使用
创建虚拟环境

[root@cs env]# virtualenv env2
[root@cs env]# virtualenv --python=python27 env2

创建好虚拟环境后,其目录如下:

/tmp/env/env1
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── activate.ps1
│   ├── activate_this.py
│   ├── activate.xsh
│   ├── easy_install
│   ├── easy_install3
│   ├── easy_install-3.6
│   ├── easy_install3.6
│   ├── pip
│   ├── pip3
│   ├── pip-3.6
│   ├── pip3.6
│   ├── python -> /usr/local/src/python36/bin/python3
│   ├── python3 -> python
│   ├── python3.6 -> python
│   ├── wheel
│   ├── wheel3
│   ├── wheel-3.6
│   └── wheel3.6
├── lib
│   └── python3.6
│       └── site-packages
│           ├── _distutils_hack
│           ├── distutils-precedence.pth
│           ├── easy_install.py
│           ├── pip
│           ├── pip-20.2.4.dist-info
│           ├── pip-20.2.4.virtualenv
│           ├── pkg_resources
│           ├── setuptools
│           ├── setuptools-50.3.2.dist-info
│           ├── setuptools-50.3.2.virtualenv
│           ├── _virtualenv.pth
│           ├── _virtualenv.py
│           ├── wheel
│           ├── wheel-0.35.1.dist-info
│           └── wheel-0.35.1.virtualenv
└── pyvenv.cfg

细心的你可能发现,启动虚拟环境的activate脚本在/env1/bin目录中(这点跟Windows稍有区别),所以启动需要这么启动:

[root@cs env]# source /tmp/env/env1/bin/activate                # 使用source启动虚拟环境
(env1) [root@cs env]# python -V
Python 3.6.8
(env1) [root@cs env]# pip list
Package    Version
---------- -------
pip        20.2.4
setuptools 50.3.2
wheel      0.35.1
(env1) [root@cs env]# pip install requests
(env1) [root@cs env]# pip list
Package    Version
---------- ---------
certifi    2020.11.8
chardet    3.0.4
idna       2.10
pip        20.2.4
requests   2.25.0
setuptools 50.3.2
urllib3    1.26.2
wheel      0.35.1 
(env1) [root@cs env]# deactivate         # 退出虚拟环境
[root@cs env]# 

跟Windows中另一个区别是,deactivate命令不再是一个脚本文件,而是一个函数,这个函数写在activate脚本中,当activate脚本启动时,就添加到shell环境中,称为了一个变量,所以,我们在虚拟环境中的任何路径下都可以退出虚拟环境。
删除
无需多说,rm -rf命令它不香么!

虚拟环境在Pycharm中的应用

Pycharm使用现有的虚拟环境#

现在,我们要开发上一小节创建的项目。

  1. 使用pycharm打开env_demo1项目根路径。
  2. filesettingsproject env_demo1project interpreter

3因为虚拟环境之前创建好了,所以选择system interpreter,然后右侧从本地找到虚拟环境中的解释器即可,完事一路ok。

4.完事,现在就用上了之前创建虚拟环境 env1 了:

pycharm创建虚拟环境#

pycharm集成了virtualenv的环境。
所以,我们可以在pycharm中直接创建虚拟环境。
filesettingsproject env_demo1project interpreter,点击设置按钮选择add,配置相关参数即可。

一个干净的虚拟环境创建完毕。

pycharm创建django并同时创建虚拟环境#

pycharm集成了django开发环境。
所以,我们在使用pycharm创建django项目的时候,可以同时选择创建一个新的虚拟环境或者选择现有的虚拟环境或者python环境作用于当前的项目。
来看操作吧!
filenew projectDjango

非常感谢大佬的分享

https://www.cnblogs.com/Neeo/articles/12327035.html

标签:virtualenv,venv,Python,env1,python,虚拟环境,env,pip
From: https://www.cnblogs.com/hhaostudy/p/17321646.html

相关文章

  • Python3基本请求库-urllib
    urlliburlopen一个基本请求fromurllibimportrequest,parsedefApi():#禁用证书验证ssl._create_default_https_context=ssl._create_unverified_contextresponse=request.urlopen('https://www.baidu.com/')print(response.read().decode(�......
  • 深入理解 python 虚拟机:字节码教程(3)——深入剖析循环实现原理
    深入理解python虚拟机:字节码教程(3)——深入剖析循环实现原理在本篇文章当中主要给大家介绍cpython当中跟循环相关的字节码,这部分字节码相比起其他字节码来说相对复杂一点,通过分析这部分字节码我们对程序的执行过程将会有更加深刻的理解。循环普通for循环实现原理我们使......
  • 一文弄懂Python中的内存管理
    1.引言Python是一种解释性语言,这意味着它在运行之前不需要编译。当Python程序运行时,它会动态地为所有变量和对象分配相应的内存。这意味着Python的内存管理是自动处理的,使得开发人员能够专注于编写代码,而不用担心相关内存分配和释放。本文就Python的内存管理进行详述,闲话少说,我们......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme虚拟的表情也在真实世界有巨大影响一步步地影响字符编码就是这样一步步发展过来的python也是一步步发展到今天的python究竟是怎么发展的呢?......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme ​ 添加图片注释,不超过140字(可选) 虚拟的表情也在真实世界有巨大影响一步步地影响 ​......
  • Python 使用Matplotlib绘制可拖动的折线
    Python使用Matplotlib绘制可拖动的折线效果图: 可以拖曲线上的点调整,也可以拖旁边的sliderbar调整.  代码如下:importmatplotlib.animationasanimationfrommatplotlib.widgetsimportSlider,Buttonimportpandasaspdimportmatplotlibasmplfrommatpl......
  • 自学Python爬虫笔记(day7)
    环境python3.9版本及以上,开发工具pycharm requests的进阶使用:案例一模拟用户登录-处理cookie:#登录->得到cookie#带着cookie去请求到暑假url->书架上的内容#必须把上面两个操作连起来#我们可以使用session进行请求->session你可以认为是一连串的请求,在这个过......
  • 使用 Python 的 socket 库来实现一个简单的 Socket 示例
    以下是一个简单的服务器端和客户端的例子:服务器端:pythonimportsocket#创建socket对象serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#获取本地主机名host=socket.gethostname()#设置端口号port=9999#绑定端口号serversocket.bind((h......
  • python3正则-表达式
    1、介绍这里整理了表达式,即pattern参数的语法。其本质是一个str类型。2、开始和结尾(1)^^匹配字符串的开头(2)$$匹配字符串的末尾(3)整体匹配同时使用^和$3、匹配次数(1)贪婪匹配和非贪婪匹配模式贪婪匹配,在允许的范围内尽可能多的匹配表达式次数。比如*、+、{n,m}等......
  • python3正则-修饰符flags
    1、介绍在re模块的函数中,多数允许设置修饰符flags参数,其用于对匹配做优化和个性设置。2、修饰符修饰符实质上是int参数类型,可以直接指定int类型,也可以通过re调用变量名称指定。修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别(locale-aware)匹配re.M多行......