• Python 虚拟环境管理工具(详细)


    Prerequisite

    工具特点一览:

    • Venv【python 3.3 版本之后添加的官方库】
    • Virtualenv【适用于各个版本的管理工具】
    • Virtualenvwrapper【可集群管理虚拟环境】
    • Virtualenv-burrito【管理上面两者的工具】
    • Pipenv【针对 Python 项目的依赖管理器】
    • Pipx【轻量级应用管理工具】
    • Autoenv【自动激活与退出虚拟环境】
    • Anaconda / Miniconda【兼容不同版本的 Python】

    不同的场景推荐使用不同的工具:

    • 针对 Windows 用户
      • 强烈推荐使用 Miniconda,能够轻易的创建任意版本的 Python,且随时可以切换环境使用
      • 如果需要一个干净的 Python 环境进行测试,推荐使用 Pipenv,创建虚拟环境的速度非常快,且库依赖不冲突
      • 从公司到家办公,或其他环境迁移的情况,推荐使用 Miniconda 和 Pipenv,它们管理库依赖的能力都很强
    • 针对 Linux 用户
      • 推荐使用 Virtualenv,相比于其他工具还要配置各种环境,它下载即可使用,方便

    讲解前须知

    我的 Windows 环境和 Linux 环境都只有一个 python 版本

    PS:查看本地全部 python 的位置:Windows 用 where python Linux 用 whereis python2whereis python3

    # Windows cmd 运行
    > python --version
    Python 3.9.1
    > pip --version
    pip 20.3.1 from D:\Software\Miniconda\lib\site-packages\pip (python 3.9)
    
    # Linux bash 运行
    $ python3 --version
    Python 3.10.4
    $ pip --version
    pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    一、Venv

    venv 在 python 3.3 版本及之后才能使用,且建立的虚拟环境的 python 版本与系统环境一致,不能修改!
    如果你的系统含有多个 python 版本,那么可以指定版本建立虚拟环境(如 python3.6 -m ven .\temp_env),不能指定系统中不存在的版本

    因为 Windows 中 venv 已经以标准库的形式存在,不用再单独安装
    而 Linux 可能会提示 apt install python3.x-venv,运行该命令即可

    成功创建后,虚拟环境文件夹包含以下文件:

    • bin【包含 pip、python 等一些可执行环境】
    • include
    • lib【包含 site-packages,用于储存下载的库】
    • lib64
    • pyvenv.cfg【配置文件】
    • Scripts【Windows 特有,用于启动环境和执行命令】
    # Windows
    
    # 在当前目录下,创建独立环境(名字为 temp_env)
    python -m venv .\temp_env
    
    # 进入环境并启用
    cd temp_env & .\Scripts\activate.bat
    
    # 此时左边括号会显示(temp_env),代表成功进入虚拟环境中了
    
    # 在虚拟环境中随意下载库,都不会影响外面的环境
    pip install request
    
    # 退出环境
    deactivate
    
    # 如果不需要该虚拟环境了,直接手动删除文件夹即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    # Linux
    
    # 在当前目录下,创建独立环境(名字为 temp_env)
    python3 -m venv ./temp_env
    
    # 进入环境并启用
    cd temp_env && source ./bin/activate
    
    # 此时左边括号会显示(temp_env),代表成功进入虚拟环境中了
    
    # 在虚拟环境中随意下载库,都不会影响外面的环境
    pip install request
    
    # 退出环境
    deactivate
    
    # 如果不需要该虚拟环境了,直接删除文件夹即可
    rm -rf ./temp_env
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二、Virtualenv

    virtualenv 可以看作是 venv 的增强版,不过早在 venv 出现之前,virtualenv 就算是最受欢迎的命令行环境管理工具了

    如果 Linux 提示 sudo apt install python3-virtualenv,运行该命令即可

    virtualenv 的特点如下:

    • 依然不能指定本地系统中不存在的 python 版本
    • 相比 venv,它支持 2.x、3.x 的 python 版本
    • 相比 venv,可以选择是否继承父环境的 pip 包(--system-site-packages
    # Windows
    
    # 下载 virtualenv
    pip install virtualenv
    
    # 在当前目录下,创建独立环境(名字为 temp_env)
    # python 版本可以指定本地系统中含有的
    virtualenv -p python temp_env
    # 如果要继承父环境的 pip 包
    virtualenv -p python --system-site-packages temp_env
    
    # 进入环境并启用
    cd temp_env & .\Scripts\activate.bat
    
    # 此时左边括号会显示(temp_env),代表成功进入虚拟环境中了
    
    # 在虚拟环境中随意下载库,都不会影响外面的环境
    pip install request
    
    # 退出环境
    deactivate
    
    # 如果不需要该虚拟环境了,直接手动删除文件夹即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    # Linux
    
    # 下载 virtualenv
    pip install virtualenv
    
    # 在当前目录下,创建独立环境(名字为 temp_env)
    # python 版本可以指定本地系统中含有的
    virtualenv -p python temp_env
    # 如果要继承父环境的 pip 包
    virtualenv -p python --system-site-packages temp_env
    
    # 进入环境并启用
    cd temp_env && source ./bin/activate
    
    # 此时左边括号会显示(temp_env),代表成功进入虚拟环境中了
    
    # 在虚拟环境中随意下载库,都不会影响外面的环境
    pip install request
    
    # 退出环境
    deactivate
    
    # 如果不需要该虚拟环境了,直接删除文件夹即可
    rm -rf ./temp_env
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三、Virtualenvwrapper

    virtualenvwrapper 又可以看作是 virtualen 的增强版

    virtualenvwrapper 的特点如下:

    • 可以对虚拟环境集中管理,即指定虚拟文件夹的存放位置
    • 配置非常麻烦
    # Windows
    
    # 下载 virtualenvwrapper,要确保已经安装过了 virtualenv
    pip install virtualenv
    pip install virtualenvwrapper-win
    
    # 修改虚拟文件夹的存放位置(默认是 C:\Users\Username\Envs)
    # 打开“编辑系统环境变量” -> 环境变量 -> 新建系统变量 -> 变量名 WORKON_HOME -> 变量值 D:\XXX(修改的位置)
    # 然后重新打开 cmd
    
    # 创建独立环境(名字为 temp_env)并启用
    # python 版本可以指定本地系统中含有的
    mkvirtualenv --python=python temp_env
    
    # 查看当前的虚拟环境目录(两个命令都行)
    lsvirtualenv / workon
    
    # 进入 / 切换虚拟环境
    # 此处我另外创建了 temp_env2
    workon temp_env2
    
    # 在不同的虚拟环境中进行任意操作,对不会影响其他的虚拟环境和外面的环境,此处就不演示了
    
    # 退出环境
    deactivate
    
    # 删除虚拟环境
    rmvirtualenv temp_env
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    # Linux
    
    # 下载 virtualenvwrapper,要确保已经安装过了 virtualenv
    pip install virtualenv
    pip install virtualenvwrapper
    
    # 先修改相关配置
    # 在 ~/.bashrc 或 ~/.zshrc 或其它环境变量相关文件中修改(一般默认是 ~/.bashrc)
    nano ~/.bashrc
    # 在最后一行添加以下三行内容
    # 虚拟文件夹的存放位置(默认是 ~/.virtualenvs),此处我不做修改
    export WORKON_HOME=$HOME/.virtualenvs
    # 创建工作目录(使用 mkproject 时会用到,但一般用不到)
    export PROJECT_HOME=$HOME/workspace
    # 指定 python 版本的位置
    # 如果不清楚位置的,可以另开一个 bash,输入 whereis python3 命令查看(一般是 /usr/bin/xxx)
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    # 输入完后按 Shift + x,再输入 y,点击回车即可
    # 最后保存配置
    source ~/.bashrc
    # 然后重新打开 bash
    
    # virtualenvwrapper 进行初始化
    # 如果不清楚位置的,可以另开一个 bash,输入 whereis virtualenvwrapper.sh 命令查看(一般是 /usr/local/xxx)
    source /usr/local/bin/virtualenvwrapper.sh
    
    # 创建独立环境(名字为 temp_env)并启用
    # python 版本可以指定本地系统中含有的
    mkvirtualenv --python=python3 temp_env
    
    # 查看当前的虚拟环境目录(两个命令都行)
    lsvirtualenv / workon
    
    # 进入 / 切换虚拟环境
    # 此处我另外创建了 temp_env2
    workon temp_env2
    
    # 在不同的虚拟环境中进行任意操作,对不会影响其他的虚拟环境和外面的环境,此处就不演示了
    
    # 退出环境
    deactivate
    
    # 删除虚拟环境
    rmvirtualenv temp_env
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    四、Virtualenv-burrito

    官方描述:使用单行命令拥有 virtualenv + virtualenvwrapper 的环境

    virtualenv-burrito 的特定如下:

    • 仅适用于 python 2.x
    • 省去了配置 virtualenvwrapper 的琐碎流程
    • 具体使用方法和 virtualenvwrapper 类似
    • 使用命令 virtualenv-burrito upgrade 一键更新 virtualenv + virtualenvwrapper

    五、Pipenv

    Pipenv 集成了 pip,virtualenv 两者的功能,且完善了两者的一些缺陷

    pipenv 的特点如下:

    • 一般环境生成的 requirements.txt 文件可能存在问题,而 pipenv 使用了 Pipfile 和 Pipfile.lock 确保了稳健性
    • 只能创建唯一的虚拟环境,更适用于一次性测试
    • 无需配置,命令简明,更易于记忆
    • 各个地方使用了哈希校验,不仅安全,且会自动公开安全漏洞
    # Windows
    
    # 下载 pipenv
    # 全局安装,如果只想在当前用户模式下安装,可添加参数 --user
    pip install pipenv
    
    # 创建虚拟环境
    # 默认创建位置是 .\Envs\Temporary-xxx
    # python 版本可以指定本地系统中含有的
    pipenv --two  # 使用当前系统中的 Python2 创建环境
    pipenv --three  # 使用当前系统中的 Python3 创建环境
    pipenv --python 3  # 指定使用 Python3 创建环境
    pipenv --python 3.6  # 指定使用 Python3.6 创建环境
    pipenv --python 2.7.14  # 指定使用 Python2.7.14 创建环境
    
    # 激活虚拟环境
    pipenv shell
    
    # 使用 python 运行文件
    python xxx.py
    
    # 退出虚拟环境
    exit
    
    # 删除虚拟环境
    pipenv --rm
    
    
    # 常用命令
    pipenv --where  # 显示目录信息
    pipenv --venv  # 显示虚拟环境信息
    pipenv --py  # 显示 Python 解释器信息
    pipenv install XXX  # 安装 XXX 模块并加入到 Pipfile
    pipenv install XXX==1.11  # 安装固定版本的 XXX 模块并加入到 Pipfile
    pipenv graph  # 查看目前安装的库及其依赖
    pipenv check  # 检查安全漏洞
    pipenv update --outdated  # 查看所有需要更新的依赖项
    pipenv update  # 更新所有包的依赖项
    pipenv update <包名>  # 更新指定的包的依赖项
    pipenv uninstall XXX  # 卸载 XXX 模块并从 Pipfile 中移除
    pipenv uninstall --all  # 卸载全部包并从 Pipfile 中移除
    pipenv uninstall --all-dev  # 卸载全部开发包并从 Pipfile 中移除
    pipenv lock -r > requirements.txt  # 将 Pipfile 和 Pipfile.lock 文件里面的包导出为 requirements.txt 文件
    pipenv lock -r --dev > requirements.txt  # 将 Pipfile 和 Pipfile.lock 文件里面的开发包导出为 requirements.txt 文件
    pipenv install -r requirements.txt
    pipenv install -r --dev requirements.txt  # 只安装开发包
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    六、Pipx

    pipx 相比于前面介绍的,属于是非常轻量级工具了
    但它仅适用于可直接运行的应用程序,而不是专门为 python 服务的

    pipx 的特点如下:

    • 能够直接在临时虚拟环境中运行应用程序(如 pipx run pycowsay moo
    • 运行非常容易报错(或许只有我是这样)
    • Windows 用户的默认下载位置为 C:\Users\Username\.local\pipx\venvs
    • Linux 用户的默认下载位置为 /home/ubuntu/.local/pipx/venvs
    # Windows / Linux
    
    # 下载 pipx
    pip install pipx
    pipx ensurepath
    # 然后重新打开 cmd / bash
    
    pipx list # 查看所有已安装的应用
    pipx install <pkn> # 下载特定应用
    pipx uninstall <pkn> # 卸载特定应用
    pipx upgrade <pkn> # 更新特定应用
    pipx upgrade-all # 更新全部应用
    pipx run pycowsay moooo # 直接运行某个库,不用下载
    pipx run <website>.<pyn>.py # 直接运行网站上的 py 文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    七、Autoenv

    官方描述:当您 cd 进入一个包含 .env 的目录中,就会 autoenv 自动激活那个环境

    autoenv 的特点如下:

    • 进入文件夹,自动启动虚拟环境;退出文件夹,自动退出虚拟环境
    • 类似的项目还有 direnv

    八、Anaconda / Miniconda

    官方描述:Anaconda 是一个用于科学计算的 Python 发行版(但主要使用它管理 python 版本的功能)
    Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包

    anaconda / miniconda 的特点如下:

    • 相比于上面全部的虚拟环境管理工具,这是唯一一个能创建本地系统不存在 python 版本的工具,即任意版本都能使用
    • anaconda 体积巨大,推荐使用 mimiconda
    • 操作方便,功能强大(支持环境迁移

    PS:软件下载与换源,参考清华大学开源软件镜像站的步骤,此处不做讲解

    # Windows
    
    # ----------- 使用 conda 创建 python 虚拟环境 -----------
    # 使用的 python 版本 = 3.6 并命名环境名为 data
    conda create -n data python=3.6
    # 下载所需 python 库
    # conda install -n data package_name
    conda install -n data numpy
    conda install -n data matplotlib==3.3.1
    # 进入环境
    conda activate data
    # 清除缓存
    # conda clean -i
    # 卸载已有 python 库
    # conda uninstall -n data package_name
    # 更新已有 python 库
    # conda upgrade -n data package_name
    
    # ----------- 使用 conda 进行虚拟环境的调整 -----------
    # 查看当前环境
    conda info
    # 查看全部环境
    conda info --envs
    # 检查并更新当前 conda
    conda update conda
    # 进入旧环境
    conda activate old_name
    # 克隆旧环境
    conda create -n new_name --clone old_name
    # 退出旧环境
    conda deactivate
    # 删除旧环境(最后记得删除旧环境的文件夹)
    conda remove -n old_name --all
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    Reference

    参考文章:廖雪峰【venv】
    参考文章:Pipenv & 虚拟环境
    参考文章:python多环境管理(venv与virtualenv)
    参考文章:一文解读 virtualenv & venv & pipenv 之间的联系与区别
    参考文章:Virtualenvwrapper使用和配置默认创建环境的路径(win10)
    参考文章:pipenv 入门教程
    参考文章:Pipx:在隔离环境中安装和运行 Python 应用
    参考文章:Windows Terminal
    参考文章:清华大学开源软件镜像站

  • 相关阅读:
    《洛谷深入浅出基础篇》P1536 村村通——并查集
    栈和队列java实现
    Linux常用命令大全
    【c++百日刷题计划】 ———— DAY9,奋战百天,带你熟练掌握基本算法
    ELF文件格式-笔记
    GTID主从
    【C++】设计模式之单例模式
    continue和break的区别与用法
    Linux系统-Ubuntu的下载和安装
    Tetrazine-PEG-SH|Tetrazine-PEG-Thiol|四嗪-聚乙二醇-巯基
  • 原文地址:https://blog.csdn.net/CourserLi/article/details/126299752