虚拟环境介绍

应用场景

python在安装第三方包时,会被pip安装到/site-package下,如果我们需要同时维护多个python项目,那这些项目都会共用一个python,而真实需求是多个项目之间依赖的包或包版本都不一样时,每个项目可能都需要拥有一套独立的环境,需要在这三个环境中随意切换,这时候虚拟环境就完美解决了这个问题。

虚拟环境

有了虚拟环境后,我们可以使用虚拟环境工具创建多个相互独立、互不影响的虚拟环境,不同的虚拟环境可以安装不同的包。

使用虚拟环境的好处

  • 保持全局环境的干净

  • 指定不同的依赖版本

  • 方便记录和管理依赖

virtualenv

win 下安装 vitualenv

  • cmd进入命令行,安装virtualenv:pip install virtualenv

  • 安装虚拟环境管理包:pip install virtualenvwrapper-win

  • 本地新建文件,用于存放项目,建议命名.env或.virtualenv,文件名前面可以加点也可以不加,加上表示在windows中该文件是隐藏文件;

  • 配置环境变量:我的电脑右键-->属性-->高级系统设置-->环境变量-->系统变量新建变量名:WORKON_HOME,变量值:第三步新建virtualenv文件所在目录,保存即环境创建成功。

virtualenv 基本用法

创建虚拟环境:mkvirtualenv -p python3 自定义虚拟环境名

(在存放虚拟环境的目录下执行;-p指定python版本,可以不加,默认指定已安装的python版本)

查看所有已创建的所有虚拟环境:workon

进入虚拟环境:workon 虚拟环境名

查看虚拟环境下所有已安装的包:pip install(在虚拟环境安装、卸载安装包与python环境命令一致)

退出虚拟环境:deactivate

删除虚拟环境:rmvirtualenv 虚拟环境名

virtualenv虚拟环境迁移

将项目一的虚拟环境迁移到项目二的虚拟环境上:

  • 当前目录下输入命令:pip freeze > requirements.txt,将当前环境所有的包名导出至requirements.txt文件;

  • 输入:pip install -r requirements.txt,安装文件中所有的包。

pipenv

pipenv是集成pip、virtualenv功能的虚拟环境工具,完善两者的缺陷。

pipevn优点

  • 记录了固定版本的详细依赖包列表,查看依赖关系十分方便;

  • 使用了哈希校验,无论安装还是卸载都非常安全。

安装步骤

  • python中安装pipenv:pip install pipenv

  • 创建虚拟环境:pipenv install ,创建后项目工程自动生成Pipfile和Pipfile.lock两份文件

    • Pipfile:记录项目的依赖包

    • Pipfile.lock:记录依赖包的详细信息,通过hash算法将包名称、版本及依赖关系生成哈希值,保证包的完整性

pipenv 的基本用法

安装虚拟环境包到默认环境:pipenv install 包名

安装虚拟环境包到开发环境:pipenv install 包名 --dev

卸载虚拟环境包:pipenv uninstall 包名(会将该包与依赖包全部卸载)

查看当前虚拟环境下安装包及依赖关系:pipenv graph

进入虚拟环境:pipenv shell

列出本地工程的路径:pipenv --where

列出虚拟环境路径:pipenv --venv

列出虚拟环境的python可执行文件:pipenv --py

生成 Pipfile.lock 文件:pipenv lock

退出虚拟环境:exit

删除虚拟环境:pipenv --rm

pipenv 虚拟环境迁移

将项目一的虚拟环境迁移到项目二的虚拟环境上:

  • 安装pipenv:pip install pipenv

  • 复制Pipfile和Pipfile.lock两份文件到新项目上

  • 新项目的终端执行命令:

    • 恢复默认环境[packages]命令:pipenv install

    • 恢复开发环境[dev-packages]命令:pipenv install --dev

最新文章

  1. 网上搜的一个shell中 中文设置的一个样例;
  2. C++@命名空间(转)
  3. tcp协议中mss的理解
  4. java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:
  5. 2D游戏编程3—GDI
  6. IOS 获取通讯录中信息
  7. web 直播&即时聊天------阿里云、融云
  8. Java中static关键字的详解
  9. [Go] golang原子函数实现goroutine同步
  10. Spring(二)IOC底层实现原理
  11. 浏览器调用接口发现Provisional headers are shown
  12. idea部署tomcat-404错误
  13. leetcode-856 Score of Parentheses
  14. vi/vim 中如何在每行行首或行尾插入指定字符串
  15. sqlserver select 查询字段if判断用法
  16. 1.oracle dblink(数据库不同实例数据对导)
  17. HDU 1159 && POJ 1458
  18. Android Studio 添加模块依赖
  19. Python Interpreter
  20. 移动端纯CSS3制作圆形进度条所遇到的问题

热门文章

  1. httprunner(11)运行测试报告
  2. Python-collections模块之defaultdict
  3. 记录一个状压DP用到的骚操作
  4. js multiple packages & lerna.js
  5. DB-Engines Ranking : Redis, MongoDB, MySQL
  6. webpack 5 模块联合
  7. VSCode & outline & source code
  8. website captcha
  9. input number step
  10. nasm astrcmp函数 x86