在实际的工作中,我们同时做的项目通常不止一个,比如说,新项目是主要开发的项目,同时还需要对老项目进行一些小的功能迭代。
如果在一台电脑上,同时开发多个不同的项目,不同项目用到同一个库的不同版本,会有冲突。比如说老项目使用 django 1.11 ,新项目使用 django 2.2,这两个版本都是长期支持版(LTS),但是两个版本的有些用法不兼容。如果我们直接在电脑上安装 django 2.2 ,则 django 1.11直接被覆盖了,老项目就不能使用了。
为了解决这种情况,可以通过安装虚拟环境的方式来实现对不同项目的隔离。
安装虚拟环境可以搭建独立的 Python 运行环境,使每个项目的运行环境与其他项目的运行环境隔离开,互不影响。这样,在项目自己的虚拟环境中安装对应库的版本,不会影响到其他虚拟环境中同名库的使用。
一、windows安装虚拟环境
首先保证 windows 上已经安装有了 Python 和 pip 。
1. cmd 进入命令行,先安装 virtualenv 和 virtualenvwrapper-win
也可以不安装 virtualenvwrapper-win ,只用 virtualenv 就可以安装虚拟环境了,但是那种安装方式使用起来不是很方便。
代码语言:javascript复制pip install virtualenv --user
pip install virtualenvwrapper-win --user
2. 使用 mkvirtualenv 命令来创建虚拟环境
代码语言:javascript复制# mkvirtualenv 虚拟环境名
mkvirtualenv vir_win
创建完成,会自动进入刚安装的虚拟环境中。命令行左边的括号表示当前所处的虚拟环境。
3. 创建虚拟环境后,会自动在用户家目录下创建一个Envs文件夹,用来存放虚拟环境,刚创建的虚拟环境目录就在里面。
进入刚创建的 vir_win 虚拟环境中,里面的目录结构如下图所示。
4. 使用 workon 可以查看当前安装有哪些虚拟环境,也可以使用 workon 接虚拟环境名进入指定的虚拟环境。
在当前的虚拟环境中,与在虚拟环境外一样,可以正常的使用 Python 。
5. 使用 pip list 查看当前虚拟环境中已安装的 Python 库。
在虚拟环境中,安装的库是与外部隔离开的,在虚拟环境中可以直接使用 pip 来安装需要使用的库,安装后只在当前虚拟环境中生效。
这就能达到安装虚拟环境的目的了,生成一套独立的项目运行环境,避免与其他项目有冲突。
在项目使用虚拟环境时,可以在磁盘的任何位置创建项目的目录,只要选择对应的虚拟环境,项目就是运行在该虚拟环境中。
6. 在虚拟环境的目录中,有一个 Scripts 目录,里面是一些相关的可执行文件和脚本。
deactivate.bat 是用来退出虚拟环境的脚本,可以在任何地方调用 deactivate.bat 脚本退出虚拟环境。
activate.bat 是用来进入虚拟环境的脚本,不过必须要到 Scripts 目录下才能使用,因为只有在 Scripts 下才知道要进入的是哪个虚拟环境。如果需要在其他位置使用,可以配一下环境变量,但是那样只能进入配了环境变量的那个虚拟环境。
workon 跟虚拟环境名是最方便的方法,所以不用给 activate.bat 配环境变量,进入虚拟环境时使用这个方法。
二、Linux 安装虚拟环境
对于 Linux 环境,不管是 Redhat 还是 ubuntu ,安装方式都相同,下面以 Redhat 为例。
代码语言:javascript复制pip3 install virtualenv
pip3 install virtualenvwrapper
1. 使用 pip3 是为了指定安装在 Python3 中,这个根据自己环境的情况来使用。如果不是使用 root 账户,需要在命令前面加 sudo 。
2. 安装完成后,还不能直接使用 mkvirtualenv ,需要先配置环境变量。
先在家目录下创建一个 .virtualenvs 目录用于存放虚拟环境,然后在 ~/.bashrc 中添加环境变量设置。在 ~/.bashrc 的最后加入下面的几行配置。
代码语言:javascript复制export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
保存修改,然后执行 source ~/.bashrc 使配置生效。
3. 使用 mkvirtualenv 跟虚拟环境名来创建虚拟环境。可以通过 -p 参数指定使用的 Python 版本(windows也可以)。
代码语言:javascript复制# mkvirtualenv -p python3 虚拟环境名
mkvirtualenv -p python3 vir_linux
创建完成,会自动进入创建的虚拟环境中。
4. 在虚拟环境中,可以像虚拟环境外一样使用 Python ,并且虚拟环境中安装的库是独立于外部的,可以在虚拟环境中安装需要使用的库。
5.可以使用 workon 来查看和切换虚拟环境。
退出虚拟环境使用 deactivate , 删除虚拟环境使用 rmvirtualenv (先退出才能删除)。
代码语言:javascript复制# 退出当前虚拟环境
deactivate
# 删除:rmvirtualenv 虚拟环境名
rmvirtualenv vir_linux
根据以上方法,可以在 windows 和 linux 中创建虚拟环境了,在开发中,为每个项目创建不同的虚拟环境,在独立的环境中开发。