Python■Python web框架 Flask( 二 )

pip的工具来解决这个问题(Python2.7中不含pip工具 , 需要单独安装) 。
安装三方包时 , 使用pip命令如下:
有趣的是 , 这个方法在大多数情况下不适用 。 假如Python解释器是全局安装的 , 所有用户都能使用 , 那么普通用户则没有权限来修改它 , 因此只能用管理员账户来执行安装操作 。 即使忽略操作的复杂性 , 使用这种全局安装的方式会发生什么?pip工具从PyPI上下载三方包并安装到全局Python目录下 , 即刻起 , 所有Python脚本都可以访问到这个三方包 。 想象这样一个场景 , 你之前用当时的最新版本Flask——0.11版本的Flask开发了一个Web应用 , 现在Flask已经更新到了0.12版本 , 你想要使用0.12版本的Flask开发第二个Web应用 。 但是 , 如果将Flask从0.11版本升级到0.12版本可能会导致第一个Web应用出现故障 。 解决这个问题的方法最好不过为旧Web应用安装和使用Flask0.11版本 , 为新Web应用安装和使用Flask0.12版本 。
为了解决维护不同应用程序对应不同版本的问题 , Python使用了虚拟环境的概念 。虚拟环境是Python解释器的完整副本 。 在虚拟环境中安装三方包时只会作用到虚拟环境 , 全局Python解释器不受影响 。那么 , 就为每个应用程序安装各自的虚拟环境吧 。虚拟环境还有一个好处 , 即它们由创建它们的用户所拥有 , 所以不需要管理员帐户 。
我们先创建项目目录 , 我将这个应用命名为microblog:
如果你正在使用Python3 , 虚拟环境已经成为内置模块 , 可以直接通过如下命令来创建它:

译者注:这个命令不一定能够执行成功 , 比如译者在Ubuntu16.04环境下执行 , 提示需要先安装对应的依赖 。 sudo apt-get install python3-venv
使用这个命令来让Python运行venv包 , 它会创建一个名为venv的虚拟环境 。命令中的第一个“venv”是Python虚拟环境包的名称 , 第二个是要用于这个特定环境的虚拟环境名称 。如果你觉得这样很混乱 , 可以用你自定义的虚拟环境名字替换第二个venv 。 我习惯在项目目录中创建了名为venv的虚拟环境 , 所以无论何时cd到一个项目中 , 都会找到相应的虚拟环境 。
请注意 , 在一些操作系统中 , 你可能需要在上面的命令中使用python而不是python3 。一些安装规范对Python 2.x版本使用python , 对3.x版本使用python3 , 而另一些则将python映射到3.x版本 。
命令执行完成后 , 当前目录下就会新增一个名为venv的目录来存储这个虚拟环境的相关文件 。
如果你使用的Python版本低于3.4(包括2.7版本) , 则不会默认支持虚拟环境 。对于这些版本的Python , 在创建虚拟环境之前 , 需要下载并安装称为virtualenv的第三方工具 。一旦安装了virtualenv , 你可以使用以下命令创建一个虚拟环境:
不管你用什么方法创建虚拟环境 , 创建完毕之后还需要激活才能够进入这个虚拟环境 。要激活你的全新虚拟环境 , 需使用以下命令:
如果你使用的是Microsoft Windows命令提示符窗口 , 则激活命令稍有不同:
激活一个虚拟环境 , 终端会话的环境配置就会被修改 , 之后你键入python的时候 , 实际上是调用的虚拟环境中的Python解释器 。此外 , 终端提示符也被修改成包含被激活的虚拟环境的名称的格式 。 这种激活是临时的和私有的 , 因此在关闭终端窗口时它们将不会保留 , 也不会影响其他的会话 。那么 , 当你需要同时打开多个终端窗口来调试不同的应用时 , 每个终端窗口都可以激活不同的虚拟环境而不会相互影响 。


推荐阅读