原文链接

虚拟环境

Python 开发中所谓的虚拟环境,就是为 Python 版本及第三方库创建独立的开发环境,使不同项目之间互不干扰。借助于虚拟环境,我们可以在同一台电脑上构建出项目 A 在基于 Python 2 的环境中运行,而项目 B 可以在基于 Python 3 的环境中运行。

虚拟环境需要通过一些工具创建,常见的几种:

1, virtualenv。这是 Python 最为常用的虚拟环境工具,简单有效,我自己就用它。本文稍后部分会介绍下基本的安装和使用。网上也有相当多的使用教程。

virtualenv 的一个局限是无法统一管理你电脑上的所有虚拟环境,因此环境多了之后,可能会遗漏,或造成冗余。对此,有一个扩展工具 virtualenvwrapper,能帮你统一管理各个环境。

2, venv。它的实现很大程度基于 virtualenv,使用方法也很类似。而 Python 现已内置了 venv。

3, conda。这个工具相当于 pip + virtualenv + virtualenvwrapper,它不仅能创建和管理虚拟环境,本身还是一个包管理器,可以下载安装第三方库。功能完善,使用也不复杂。著名的数据分析开发包 anaconda 里就默认使用 conda 作为环境和模块管理工具。

接下来我们简要介绍下:

virtualenv 的使用

安装

在系统命令行通过 pip 或者 easy_install 安装即可:

pip install virtualenv

如果你的命令行无法执行 python、pip 及后续的 virtualenv 命令,请检查你环境变量里的 PATH 路径。(还不熟悉的请在公众号回复关键字 安装)

创建

进入到合适的目录下(一般是项目根目录,但不建议加入 git 仓库里提交),通过 virtualenv 命令创建一个名为 MY_ENV 的环境(这个名字可自定义):

virtualenv MY_ENV

没有报错的话,会成功创建目录 MY_ENV,其中有一些目录和文件,这就是我们的虚拟环境所在了。

激活

使用虚拟环境前,需要“激活”环境:

windows

进入
MY_ENV\Scripts 目录,运行 activate

linux

source MY_ENV/bin/activate

路径根据你所在位置会有所不同,也可以使用完整路径。

激活环境之后,命令行前面会用括号标识出你所在的环境。这时候再通过 pip 安装第三方模块,就不会影响到系统本身的 Python 环境。

关闭

当不需要环境时,可以通过 deactivate 命令关闭。当然,直接关掉命令行窗口也没毛病。

指定 Python

虚拟环境的创建,默认是使用 virtualenv 所在的那个 Python 版本。如果你电脑上有多个 Python,则可以指定环境的 Python 版本,例如:

virtualenv -p C:python27python.exe ENV27

虚拟环境的本质

为什么简单几行命令,就可以实现 Python 环境的分离?本质上靠的还是环境变量里的 PATH 路径。

PATH 的作用,就是当你执行一个命令时,系统要知道去哪里找这个命令。PATH 里有多个路径,就按顺序从前到后依次查找。执行 python、pip 等命令时,都是按照这个方式进行。

通过 echo 命令可以查看路径:

windows

linux

当版本出现混乱时,往往就是 PATH 中有多个路径,不同路径中有含有相同的命令,以至于执行了并非你预期的那个版本中的命令。比如你的 python 命令是在 python27 目录下,而 pip 执行的却是 python36/Scripts 里的,然后就发生了“明明安装成功了,程序里却找不到”的情况。

而当激活一个虚拟环境时,就相当于在 PATH 的开头增加了我们创建的目录,使用这个目录里的 Python 及相关库。安装新的库也是装在新建的这个目录之下。从而避免与其他版本发生干扰。

如果你不清楚你所用的命令究竟是哪里的,可以在命令行中使用 where/which 命令查看:

PyCharm 里的虚拟环境

可能很多同学还不习惯用命令行,而是完全使用 IDE 来进行配置。那么最后我特别提一下 PyCharm 的情况。

新版本的 PyCharm 默认会在创建项目时新建一个虚拟环境,因此不了解这个操作的同学会疑惑,命令行里用 pip 装好的模块为什么到 PyCharm 里就用不了了。简单的解决方法,就是从 PyCharm 的设置面板里安装库。

其他的可选方案:

  1. 建项目时不要选新建虚拟环境
  2. 建项目时选虚拟环境继承已有的库
  3. 建项目时选用命令行创建好的虚拟环境
  4. 建好项目后,在命令行激活对应虚拟环境后再安装库

以上就是关于虚拟环境的一些介绍,留个小作业:亲自动手创建一个虚拟环境,并在其中安装一个第三方库。

Python的virtualenv管理的更多相关文章

  1. virtualenv 管理python 环境

    virualenvvirtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升级不 ...

  2. 【转】利用virtualenv管理Python环境

    virtualenv virtualenv用于创建独立的Python环境,多个python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升 ...

  3. Python 虚拟环境Virtualenv

    本人也是Python爱好者,众所周知,Python扩展多,每次为了测试,安装各种各样的扩展,这样导致本地的Python环境非常混乱,就有人想到搞个隔离环境  和 本地环境没有关系,随时可以删除这个隔离 ...

  4. Python之 Virtualenv简明教程

    virtualenv通过创建独立Python开发环境的工具, 来解决依赖.版本以及间接权限 问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不 ...

  5. python虚拟环境virtualenv简介

    参考网站: https://realpython.com/python-virtual-environments-a-primer/ 一. 创建一个新的虚拟环境 # Python 2: $ virtu ...

  6. [Python] Python 虚拟机 - virtualenv

    virtualenv virtualenv 用于创建一个隔离的 Python 环境. 每个项目都有自己的依赖包,这些依赖包有时存在版本冲突,处理这种情况最好方法就是为每个项目创建一个专属的环境. 安装 ...

  7. 从pip+requirements.txt+virtualenv管理依赖到使用pipenv管理依赖-修改布署方式

    背景: 已经使用pip+requirements.txt+virtualenv管理了项目一段时间,为了不要每次都 导出依赖(本地),安装依赖(服务器) 现在要使用pipenv来管理项目的依赖关系 思路 ...

  8. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  9. python学习笔记10(Python的内存管理)

      用这张图激励一下自己,身边也就只有一位全栈数据工程师!!! 32. Python的内存管理 1. 对象的内存使用 对于整型和短字符串对象,一般内存中只有一个存储,多次引用.其他的长字符串和其他对象 ...

随机推荐

  1. Scrum Meeting 博客汇总

    Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha 第一次 Scrum Meeting 第二次 Scrum Meeting 第三次 Scrum Meeting 第四 ...

  2. oracle通过dblink连接mysql配置详解(全Windows下)

    关于oracle通过dblink连接mysql,经过了两周的空闲时间研究学习,终于配置好了,真是不容易啊,仔细想想的话,其实也没花多长时间,就是刚开始走了一段弯路,所以把这次的经验分享出来,让大家少走 ...

  3. 【深入学习linux】Linux系统安装

    1. 配置内存大小,和设置镜像文件,开启虚拟机,点击虚拟机,立即按F2,会出现下图 2. 选择 Boot 菜单,默认是以硬盘进行启动,但是硬盘目前为空,则不能启动,需要改成以光盘形式启动即 CD-RO ...

  4. Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载

    Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载地址:https://pan.baidu.com/s/1RnHVuMcCNZQ7ncHLKDJ33Q

  5. tornado多进程模式不同进程写不同日志

    #coding: utf- ''' Author: Time: Target: ''' import logging import logging.handlers import os import ...

  6. Running MYSQL 5.7 By Bash On Ubuntu On Windows:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

    root@PC-RENGUOQIANG:/usr/sbin# /etc/init.d/mysql start * Starting MySQL database server mysqld [ OK ...

  7. SQLServer查看及设置最大连接数(转)

    转自:https://blog.csdn.net/duanbeibei/article/details/86573840 很多时候自己本地开发会遇到 ,打开几个连接正常访问 之后就报错误,这时候需要调 ...

  8. 2019 GDD TensorFlow

    https://www.tensorflow.org/ https://tensorflow.google.cn/     (中文站点) 现场PPT照片:    https://pan.baidu.c ...

  9. [No000019A]IDEA 设置手册

    [No000019A]idea设置手册.rar IDEA 设置手册 IDEA 设置手册 plugin lgnore files and folesrs 代码管控 程序框架 部署方式 useless 3 ...

  10. 【转】Notepad++如何设置行高

    Notepad++行高没有提供正式的设置方法,但可以通过一个 hack 来调整: 在[设置]「Style Configurator」对话框(中文是「语言格式设置」)里选择语言的地方选第一项「Globa ...