Python虚拟环境

一、虚拟环境介绍

  • 主要工具virtualenvpipenv
  • 为给不同的工程创建互相独立的工程
  • 每个功能都有自己的依赖包,与工程无关
  • 虚拟环境中同一个包可以有不同的版本
  • 虚拟环境的数量没有限制

二、virtualenv的安装和应用

环境安装(windows)

  1. pip 安装 virtualenv
  2. pip 安装虚拟环境管理包 virtualenvwrapper-win
  3. 创建一个存放虚拟环境的家目录(建议命名.env或.virtualenv)
  4. 配置环境变量(变量名:WORK_HOME,路径是创建的虚拟环境家目录)

virtualenv的使用命令

  • workon : 列出所有的虚拟环境
  • workon [name] : 进入指定的虚拟环境
  • deactivate :退出当前的虚拟环境
  • mkvirtualenv [name] : 创建虚拟环境
  • rmvirtualenv [name] : 传出虚拟环境
  • 安装第三方库 :进入虚拟环境 pip install

requirements.txt 文件

  • requirements.txt文件,里面会记录当前项目的所有依赖包及版本号,其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖

  • 导出当前环境的requirements.txt

    • 项目在虚拟环境中就导出虚拟环境的配置
    • 项目在本地环境也可以导出本地环境的配置
    • pip freeze >requirements.txt
  • 使用requirements.txt恢复环境

    • 项目在虚拟环境中就安装到虚拟环境里
    • 项目在本地环境中就安装到本地环境里
    • 将文件导入到新项中执行命令
    • pip install -r requirements.txt

三、pipenv的安装和应用

安装 pip install pipenv

pipenv 集成了pip,virtualenv两者的功能,pipenv使用pipfile和pipfile.lock记录包信息,前者用来记录项目依赖包列表,后者记录固定版本的详细依赖包列表,查看依赖关系十分方便,各个地方使用了哈希效验,无论安装还是卸载包都十分安全

创建虚拟环境

  • 第一步撞见文件夹 mkdir [name]
  • 第二步进入文件夹 cd [name]
  • 第三部初始化虚拟环境 pipenv install
  • 初始化后会生成pipfile和pipfile.locke文件

pipenv管理模块和包

  • 在虚拟环境中安装包:pipenv install 包名 将包安装在[packages]下(注意:当前项目路径下执行命令)
  • pipenv install --dev 包名 将包安装在开发环境中[dev-packages]
  • 卸载虚拟环境安装包 pipenv uninstall 包名
  • 查看安装包及依赖关系 pipenv graph
  • 生成requirements.txt文件
    • pipenv lock -r >requirements.txt 来源[packages]
    • pipenv lock-r--dev >requirements.txt 来源[dev-packages]
  • 使用requirements.txt恢复环境
    • pipenv install -r requirements.txt
  • 使用pipfile和pipfile.lock恢复环境
    • 将两个文件导入到新的项目中,在项目路径下执行
    • pipenv install 项目环境恢复
    • pipenv install --dev 开发环境恢复

pipenv的相关命令

  • pipenv --rm 删除虚拟环境
  • pipenv --where 列出当前工程路径
  • pipenv --venv 列出虚拟环境路径
  • pipenv --py 列出python解释器路径
  • pipenv graph 查看依赖包
  • pipenv lock 生存lock文件
  • pipenv shell 进入虚拟环境
  • exit 退出虚拟环境

总结

  1. virtualenv 任意项目都能workon创建虚拟环境; pipenv 创建的虚拟环境进去默认在该路径下,提前做了一步锁定,别的项目要使用该环境还要切换到项目路径下才能使用
  2. virtualenv 不区别 开发依赖和项目依赖包 pipenv做了进一步区分为[dev-packages]和[packages]
  3. pip freeze 生成全部的依赖包的requirement.txt
  4. pipenv lock-r区别[dev-packages]和[packages]生成requirement.txt

pipenv 更加强大根据项目建立虚拟环境,默认该项目就和虚拟环境做了联系