Python 的版本问题一直是个广被吐槽的黑点。以致于有人调侃说:python
Python 是世界上最好的两种语言!
在这里我要说明下,对于初学者来讲,版本间的语法差别其实并不大。如今刚开始学 Python 的人,放心大胆地用最新版本便可。业内所诟病的,主要是针对代码上的不兼容。linux
但平心而论,版本间的兼容问题并非 Python 所独有。且就算 Python 只有一个版本,第三方库的版本同样会让人抓狂。git
好比说,你以前在电脑上用 Python 写了一个网站,使用了 django 框架,版本是 1.11。过了一年,你要开发一个新网站,这时候 django 已经发展到了 2.0 版本,你是用仍是不用?更新了版本,电脑上的老网站代码就没法执行了。django
或者,你安装并使用了某个模块 A 的最新版本。而后另外一个项目用到的模块 B,B 的代码却依赖于模块 A 较早的版本。这种状况下,你甚至可能都没法成功安装模块 B。编程
这些版本的冲突在开发中十分常见,而 Python 2 和 3 的版本差别又加重了这一问题。windows
对此,早已有了成熟的解决方案:app
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 做为环境和模块管理工具。
接下来咱们简要介绍下:
安装
在系统命令行经过 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:\python27\python.exe ENV27
复制代码
为何简单几行命令,就能够实现 Python 环境的分离?本质上靠的仍是环境变量里的 PATH 路径。
PATH 的做用,就是当你执行一个命令时,系统要知道去哪里找这个命令。PATH 里有多个路径,就按顺序从前到后依次查找。执行 python、pip 等命令时,都是按照这个方式进行。
经过 echo
命令能够查看路径:
windows
linux
当版本出现混乱时,每每就是 PATH 中有多个路径,不一样路径中有含有相同的命令,以致于执行了并不是你预期的那个版本中的命令。好比你的 python 命令是在 python27 目录下,而 pip 执行的倒是 python36/Scripts 里的,而后就发生了“明明安装成功了,程序里却找不到”的状况。
而当激活一个虚拟环境时,就至关于在 PATH 的开头增长了咱们建立的目录,使用这个目录里的 Python 及相关库。安装新的库也是装在新建的这个目录之下。从而避免与其余版本发生干扰。
若是你不清楚你所用的命令到底是哪里的,能够在命令行中使用 where/which
命令查看:
可能不少同窗还不习惯用命令行,而是彻底使用 IDE 来进行配置。那么最后我特别提一下 PyCharm 的状况。
新版本的 PyCharm 默认会在建立项目时新建一个虚拟环境,所以不了解这个操做的同窗会疑惑,命令行里用 pip 装好的模块为何到 PyCharm 里就用不了了。简单的解决方法,就是从 PyCharm 的设置面板里安装库。
其余的可选方案:
这些我在以前的文章 [新手向视频]新版PyCharm建立项目为何会有问题 里也提过,查看 PyCharm 的上手教程,可在公众号(Crossin的编程教室)回复关键字 pycharm
以上就是关于虚拟环境的一些介绍,留个小做业:亲自动手建立一个虚拟环境,并在其中安装一个第三方库。
过程当中有任何疑问,或想了解更多关于虚拟环境的配置,能够上咱们的论坛 http://bbs.crossincode.com 进行讨论。
下课!
════
其余文章及回答:
如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 知乎下载器 | 人工智能 | 嘻哈 | 爬虫 | 我用Python | 高考 | requests | AI平台
欢迎搜索及关注:Crossin的编程教室