Python之虚拟环境venv实战详解

发布时间 2023-04-15 18:50:21作者: 浩浩学习

 

安装配置虚拟环境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