一、python虚拟环境介绍

虚拟环境(virtual environment),它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。

二、为什么要使用虚拟环境

  • 同时开发多个项目,各自项目使用的python版本不同,譬如一个是python2.x,另一个是python3.x,那么需要来回的切换python版本;

  • 当你同时开发多个项目时,特别是多个项目使用同一个库,譬如:django,但是各自项目使用的django的版本不一致时,那么你在开发这些项目时,需要来回的卸载和安装不同的版本,因为同一个python环境中,同名的库只能有一个版本。

  • 项目部署时,直接导出项目对应的环境中的库就可以了;(pip freeze > filename.txt)
    PS:实际项目开发时,建议每个项目使用独立的虚拟环境,但是在进行学习时,只使用一个虚拟环境就够了,避免频繁的创建虚拟环境,安装第三方库,浪费时间。

三、虚拟环境的安装

windows环境下安装虚拟环境

  1. 安装好python环境

  2. 先查看当前电脑中是否有虚拟环境命令:virtualenv --version

  3. 安装虚拟环境库,在cmd中输入: pip install virtualenv

  4. 创建虚拟环境,在cmd中切换到需要创建虚拟环境的目录下,执行(env_name 为你要创建的虚拟环境名):
    virtualenv env_name

  5. 激活虚拟环境,在cmd中进入到 第三步创建的 env_name/Scripts 目录下,执行: activate
    执行成功后,在cmd中,当前输入行前面会有 (env_name) 的前缀。在当前状态下,使用 pip 就是在虚拟环境中安装第三方库了

  6. 退出虚拟环境,cmd中输入: deactivate

问题1:使用virtualenv创建环境的时候,当前目录在哪儿就在哪儿创建,会导致以后到处都是(C盘D盘)环境,不便管理。
问题2:需要记住环境目录所在,并使用cd命令 有可能 多次进入指定环境才能激活,过程有点繁琐,不便操作。

四、虚拟环境优化

在使用过程中,会发现上述的步骤,会有不少局限,譬如必须切换到指定目录才能操作等。通过安装 virtualenvwrapper-win 可以更加简便的使用虚拟环境(需要先安装virtualenv)

  1. pip安装 pip install virtualenvwrapper-win

  2. 在环境变量中,配置虚拟环境的指定安装目录,打开系统环境变量配置

  3. 新建系统变量名:WORKON_HOME,变量值配置为你的系统中一个指定目录,譬如:F:\python3_env

创建第3步中的文件夹

  1. 保存配置

在cmd中运行 workon或者lsvirtualenv ,即可查看当前本机已经创建的所有虚拟环境名

C:\Users\Administrator>workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
django_env_01
Django_login_system_01
django_env_02
django_shopping
django_shopping_mall
flask_02
flask_news
flask_shopping_env
pachong

新建虚拟环境,cmd中输入:
mkvirtualenv env_name - p python

PS:可以在cmd命令窗口的任意目录下新建,最终虚拟环境文件夹都会创建在 第 2 步中的 WORKON_HOME 指定的文件夹中。

激活虚拟环境,cmd中输入:
workon env_name

退出虚拟环境,cmd中输入:
deactivate

删除虚拟环境,cmd中输入:
rmvirtualenv env_name

项目部署时,导出虚拟环境的依赖包到requements.txt文件中的命令:
pip freeze > filename.txt


Linux环境下安装虚拟环境

  1. 先查看当前电脑中是否有虚拟环境命令
    virtualenv --version

  2. 安装虚拟环境的命令:
    sudo pip install virtualenv
    sudo pip install virtualenvwrapper

# 查看安装的包
[root@localhost ~]# pip list
Package           Version   
----------------- ----------

virtualenv        20.0.35   
virtualenv-clone  0.5.4     
virtualenvwrapper 4.8.4     
Werkzeug          1.0.1     
wsproto           0.15.0    
zstandard         0.13.0    
WARNING: You are using pip version 19.2.3, however version 20.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[root@localhost ~]# 
[root@localhost ~]# virtualenv --version
virtualenv 20.0.35 from /usr/local/Program/Python3.8/lib/python3.8/site-packages/virtualenv/__init__.py

  1. 查看是否有mkvirtualenv创建虚拟环境指令
    mkvirtualenv --version
[root@localhost ~]# mkvirtualenv --version
-bash: mkvirtualenv: 未找到命令
[root@localhost ~]# 

  1. 安装完虚拟环境后,如果提示找不到mkvirtualenv,workon等命令是正常的,须配先要置环境变量保存的路径以及shell指令才能使用。
  2. 创建目录用来存放虚拟环境,一般放在home下
    mkdir /HOME/用户名/.virtualenvs
  3. 查找virtualenvwrapper所在的路径(记得加.sh要不然查到出来的路径不正确)
    whereis virtualenvwrapper.sh或 find / -name virtualenvwrapper.sh
[root@localhost ~]# whereis virtualenvwrapper.sh
virtualenvwrapper: /usr/local/Program/Python3.8/bin/virtualenvwrapper.sh
[root@localhost ~]#
  1. 打开~/.bashrc文件,并添加如下(根据自己实际情况添加):
   export WORKON_HOME=/home/bert/.virtualenvs
   source /usr/local/Program/Python3.8/bin/virtualenvwrapper.sh

在这里插入图片描述

  1. 运行source /root/.bashrc(激活更新配置)
    source ~/.bashrc

:如果你的环境是python3,重新加载后,可能会出现这样类似的错误

    /usr/bin/python: No module named virtualenvwrapper
    virtualenvwrapper.sh: There was a problem running the initialization hooks. 
    If Python could not import the module virtualenvwrapper.hook_loader,
    check that virtualenvwrapper has been installed for
    VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
    set properly.

因为在virtualenvwrapper.sh中有如下代码

    # Locate the global Python where virtualenvwrapper is installed.
    if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
        VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
    fi

解决方案
直接将VIRTUALENVWRAPPER_PYTHON默认值修改为你自己的python3安装路径即可(which python3命令可帮你自动查找)

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
fi


脚本会默认使用python2环境,但是virtualenvwrapper装在了python3环境中,所以会有上面的报错。

  • 创建虚拟环境的命令 :
    mkvirtualenv 虚拟环境名称(python2.x)
    例: mkvirtualenv py_flask -p /usr/bin/python

    mkvirtualenv -p python3 虚拟环境名称(指定python3.x,此处的python3.x其实是python3.x的安装路径,这样写的前提是你已经配置过python的环境变量或者建立了软连接了。)
    例 :mkvirtualenv -p python3 py3_flask

其他的操作与windows类似。

提示 : 工具包安装的位置 :
python2版本下:~/.virtualenvs/虚拟环境名/lib/python2.7/site-packages/
python3版本下:~/.virtualenvs/虚拟环境名/lib/python3.8/site-packages/

总结

一,先查看操作系统中是否有虚拟环境?
	virtualenv --version

二,如果查看之后没有虚拟环境的命令,则安装[需要联网]
	pip install virtualenv
	pip install virtualenvwrapper

三,查看当前操作系统中有哪些虚拟环境的文件夹?
	workon

四, 创建虚拟环境文件夹
	#该命令安装好之后默认的python解释器是python2.X
	mkvirtualenv 文件夹的名字


	#指定安装python3的解释器
	mkvirualenv -p python3 虚拟环境文件夹


五,从虚拟环境中退出
	deactivate [虚拟环境文件夹的名称]


六,进入到虚拟环境中
	workon 虚拟环境名称

七,删除虚拟环境
	rmvirtualenv 虚拟环境

八,安装flask框架
	pip install flask==0.10.1

九,查看当前虚拟环境中有哪些扩展
	pip freeze

	搞定,已经可以使用flask做基本的开发了

十,导出虚拟环境中的所有的扩展
	pip freeze > requirements.txt


十一,使用requirements.txt安装虚拟环境
	pip install -r requirements.txt

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐