Python

一、什么是虚拟环境?

Python 虚拟环境的主要目的是为了给不同的工程创建互相独立的运行环境。在虚拟环境下,每一个工程都有自己的依赖包,而与其它的工程无关。不同的虚拟环境中同一个包可以有不同的版本。并且,虚拟环境的数量没有限制,我们可以轻松地用 virtualenv 或者 pyenv 等工具来创建多个虚拟环境。

Python 中有 virtualenvpy venv 虚拟环境,简单使用的话 Python 自带的虚拟环境也是挺好的,自带虚拟环境不需要安装。

二、虚拟环境是如何工作的?

在激活虚拟环境后,python 可执行文件的路径变成了当前环境目录下的路径,并且 $PATH 也发生了变化:

$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate(env) 
$ echo $PATH/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

虚拟环境下的bin目录排在了 $PATH 的最前面。这意味着,用户在命令行中执行 python 的时候,将率先使用虚拟环境下的可执行文件,而不是系统默认的。

虚拟环境下的 python 可执行文件与系统默认的有什么不同呢?

事实上,上面提到的 python 可执行文件之间并没有什么不同,但是它们所在的位置至关重要。在Python 启动的时候,它会获取自身所在的路径。然后这一路径(bin的上一级)被设置到 sys.prefixsys.exec_prefix 之中。在搜索第三方的 site-packages 时,搜索目录是 sys.prefix 所指向的路径下的 lib/pythonX.X/site-packages/,其中 X.X 是 Python 的版本。

Python 是如何找到虚拟环境下的第三方库的呢?

在前面的例子中,python 文件所在路径为 /Users/michaelherman/python-virtual-environments/env/bin,因此 sys.prefix 会被设为 /Users/michaelherman/python-virtual-environments/env ,从而 site-packages 的路径就变成了 /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages 。最后,这一路径被存储在 sys.path 数组中,其中包含着所有包的引用来源。

三、虚拟环境的安装使用

py venv 虚拟环境使用

  1. 创建虚拟环境
    命令格式:python -m venv 虚拟环境名称
    进入对应目录后运行:

    python -m venv .venv

    虚拟环境就安装到当前目录下的 .venv 目录下了。

  2. 进入虚拟环境

    .venv\scripts\activate.bat        // Windows 下
    source .venv/bin/activate         // Linux 下
  3. 退出虚拟环境

    deactivate
  4. 虚拟环境中安装库
    刚创建的虚拟环境是干净的,需要自己安装需要的第三方库。如安装PyQt5:
    pip install PyQt5

    虚拟环境是独立的,在进入虚拟环境后可用 pip freeze 查看当前环境中安装了那些第三方库。

virtualenv 虚拟环境使用

  1. 安装 virtualenv

    pip install virtualenv
  2. 创建虚拟环境
    命令格式:virtualenv 虚拟环境名称
    进入对应目录后运行:

    virtualenv .venv

    虚拟环境就安装到当前目录下的 .venv 目录下了。

  3. 进入虚拟环境

    .venv\scripts\activate.bat        // Windows 下
    source .venv/bin/activate         // Linux 下
  4. 退出虚拟环境

    deactivate
  5. 虚拟环境中安装库
    刚创建的虚拟环境是干净的,需要自己安装需要的第三方库。如安装PyQt5:
    pip install PyQt5

    虚拟环境是独立的,在进入虚拟环境后可用 pip freeze 查看当前环境中安装了那些第三方库。

四、管理虚拟环境

通过以上方式即可创建一个虚拟环境,但是这种方式需要记住每一个虚拟环境的目录显得太麻烦,虚拟环境可以通过一些工具来管理,从而使用起来更加方便,这里推荐 virtualenvwrapper

  1. 安装 virtualenvwrapper

    pip install virtualenvwrapper-win         // Windows 下
    pip install virtualenvwrapper             // Linux 下
  2. 输入 workon 命令查看是否可用

    // 输出结果如下表示成功
    Pass a name to activate one of the following virtualenvs:
    ==============================================================================
    找不到文件
  3. 使用 virtualenvwrapper 创建虚拟环境
    命令格式:mkvirtualenv 虚拟环境名称

    mkvirtualenv testenv

    注:Windows 下虚拟环境默认放在 C:\Users\Administrator\Envs 目录中。

  4. 删除虚拟环境
    命令格式:rmvirtualenv 虚拟环境名称

    rmvirtualenv testenv
  5. 进入虚拟环境
    命令格式:workon 虚拟环境名称

    workon testenv
  6. 退出虚拟环境

    deactivate
  7. 常用命令列表

    # 列举所有的虚拟环境
    lsvirtualenv
    
    # 显示所有的虚拟环境包
    lssitepackages
      
    # 导航到当前激活的虚拟环境的目录中,比如说这样就能够浏览它的 site-packages
    cdvirtualenv
    
    # 和上面的类似,但是是直接进入到 site-packages 目录中
    cdsitepackages
    
    # 这会在 ~/Envs 中创建 my_django115 文件夹
    mkvirtualenv my_django115
      
    # 启动/切换虚拟环境
    workon my_django115
    
    # 退出虚拟环境
    deactivate
      
    # 删除虚拟环境
    rmvirtualenv my_django115
  8. 修改虚拟环境默认存放路径
    Windows 下:
    找到系统环境变量,添加变量名为 WORKON_HOME 值为指定路径即可。如图(Win):
    WORKON_HOME

    Linux下:
    设置 linux 的用户个人配置文件 ~/.bashrc 添加如下内容:

    WORKON_HOME=~/Envs      #设置virtualenv的目录,以后自动下载的虚拟环境全都放这里
    VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'       #添加virtualenvwrapper的参数,生成干净隔绝的环境
    VIRTUALENVWRAPPER_PYTHON=/opt/python/bin/python3     #指定python解释器的本体(路径为python3安装的目录)
    source /opt/python/bin/virtualenvwrapper.sh         #执行virtualenvwrapper安装脚本(路径需要根据自己的安装位置进行配置)

    配置完成后重新登录配置生效。
    如图(图片来源于互联网):
    workon_home_linux

参考文章:
1.python虚拟环境的安装和配置-virtualenv,virtualenvwrapper_Mrical的博客-CSDN博客
2.Linux下的快速配置虚拟环境virtualenvwrapper - 柳帅 - 博客园

最后修改:2020 年 01 月 12 日 12 : 57 PM
如果觉得我的文章对你有用,请随意赞赏