在 Linux 下使用 Python,我对各种版本的 python 解释器、pip 以及 N 多 python 包都产生了恐惧,因为我的主机上安装了 2.7、3.5、3.6、3.7 几种版本的 python,Django 也有 1.11 和 2.0 的版本。每启动一个新的项目,都要花时间处理版本之间的问题,实在太头痛了。所以要使用 python 虚拟环境!尤其对于 Web 类的 Python 项目,使用 virtualenv 将有利于后续的系统上线,便于开发环境和生产环境的管理。
$ pip3 install virtualenv
检查是否安装成功:
$ pip3 freeze | grep virtualenv
virtualenv==16.0.0
如果你使用的是 Ubuntu,其实也可以直接通过 apt 来安装
$ sudo apt-get install python-virtualenv
$ sudo apt-get install python3-venv
说明:
Python 3.3 以上的版本通过 venv 模块原生支持虚拟环境,可以代替 Python 之前的 virtualenv。该 venv 模块提供了创建轻量级“虚拟环境”,提供与系统 python 的隔离支持。每一个虚拟环境都有其自己的 Python 二进制(允许有不同的 Python 版本创作环境),并且可以拥有自己独立的一套 Python 包。
比如我们要开发一个新项目,需要一套独立的 Python 运行环境。那么我们首先创建一个项目目录:
$ mkdir myproject
$ cd myproject/
然后在当前目录创建虚拟环境:
$ python -m venv .
Python 虚拟环境可以为每个项目创建一个干净的 python 环境。如果你使用的是较早的 python 版本,或者系统没有正确配置,不能使用 venv 模块,那么可以安装并使用 virtualenv 包。通过 pip 安装 $ pip install virtualenv
,然后在当前目录创建一个虚拟环境 $ virtualenv your_env --python=python3
,后面的参数用于指定虚拟环境中用的 python 解释器。比如创建一个名为 venv 的环境:
$ virtualenv venv --python=python3
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/rudy/workspace_hd/Python_Learning/tmp/myp2/venv/bin/python3
Also creating executable in /home/rudy/workspace_hd/Python_Learning/tmp/myp2/venv/bin/python
Installing setuptools, pip, wheel...done.
在当前目录下,可以看到如下目录结构:
$ tree -L 2
.
└── venv
├── bin
├── include
├── lib
└── pip-selfcheck.json
启动该虚拟环境:
$ source venv/bin/activate
执行完上述命令,会看到 shell 的命令提示符发生了变化,前面多了 (venv)
前缀。
然后在此虚拟环境下就可以使用 pip install
来安装各种 Package 啦,这些包都会被安装到 venv 这个环境下,系统的 Python 环境不会受到任何影响。也就是说,这里的 venv 环境是 myproject 项目工程专用的,从而达到将每个 Python 应用环境隔离开来的目的。
好啦,当我们完成操作,需要退出当前的虚拟环境,在虚拟环境中执行如下命令即可:
$ deactivate
virtualenv 的用法很简单,到这里就讲完啦。假如你的项目需要发布上线,就可以连同 venv 虚拟环境一起发布,这样就可以省去很多版本兼容型问题。程序员之间就不用因为 “刚刚在我这边还可以的,怎么到你那就运行不了?” 而吵架啦。