为什么需要虚拟环境?
-
在我们日常的项目开发过程中,我们通常会按照项目的需求去下载相应的框架库,如Django、Flask等,但是不同的项目所使用的框架库并不一定是相同的,或者使用相同的框架但是版本需求是不同的,这时候需要我们根据需求不断的安装,更新或卸载相应的库。会对我们的开发环境和项目造成很多不必要的麻烦,管理起来也相当困难。
-
比如我们之前的项目中就遇到了项目A需要用到Python2.x版本,项目B要用到Python3.x版本,在实际的开发过程中,需要不断切换项目解释器,那就很麻烦了。
-
虚拟环境提供了一个独立的空间,独立的环境,不同的项目可以在各自的环境中调用第三方工具,使用虚拟环境中的解释器。同时开发多个项目时,更加方便
虚拟环境的使用:
-
先检查是否有virtualenv库
virtualenv --version
-
如果没有下载,安装virtualenv库,这个库能够方便我们创建虚拟环境
pip3 install virtualenv
-
安装完virtualenv库,找到virtualenv的可执行文件,为了可以直接使用virtualenv命令,设置软链接
find / -name virtualenv # 返回值:/usr/local/python3/bin/virtualenv ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
-
创建测试目录,并进入此目录
mkdir test cd test
-
创建虚拟环境
# 会在项目目录下创建一个名为 myenv 的虚拟环境: virtualenv myenv
#virtualenv 还有很多参数,用于不同的使用场景,例如: # 创建虚拟环境时,指定Python解析器,默认为当前环境中的Python virtualenv -p /usr/bin/python2 myenv # 如果创建虚拟环境的目录已经有了其他虚拟环境,清除重建 virtualenv --clear myenv
-
进入虚拟环境
cd test source myenv/bin/activate
-
退出虚拟环境
deactivate
虚拟环境管理工具:
-
为什么需要虚拟环境管理工具?
因为 virtualenv 创建虚拟环境,在那个目录执行 virtualenv 命令,虚拟环境目录就在此目录下,时间长了可能我都不知道自己有几个虚拟环境了。 每次使用虚拟环境的时候,都需要先找虚拟环境目录,然后进入虚拟环境目录下,再激活,步骤实属麻烦。 所以,为了再方便一点,需要一个管理虚拟环境的工具。
-
virtualenvwrapper库依赖virtualenv库,先检查是否有virtualenv库,再检查是否有virtualenvwrapper库
virtualenv --version virtualenvwrapper --version
-
如果没有,安装virtualenvwrapper库,这个库能够方便我们管理虚拟环境
pip3 install virtualenvwrapper
-
配置virtualenvwrapper
# 在当前用户的家目录下生成一个可以放置所有虚拟环境的文件夹(.virtualenvs文件夹) # 在root用户下,下面命令即 mkdir -p /root/.virtualenvs mkdir -p $HOME/.virtualenvs # 查看自己需要的python环境位置 # 返回值/usr/bin/python3 which python # 寻找virtualenvwrapper.sh位置 # 返回值 /usr/local/python3/bin/virtualenvwrapper.sh find / -name virtualenvwrapper.sh # 打开当前用户的环境变量: vim $HOME/.bashrc # 在当前用户的环境变量的最后面添加以下代码 export WORKON_HOME=$HOME/.virtualenvs #指定virtualenvwrapper环境的目录(which python3 获取的python位置) export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 #指定virtualenvwrapper通过哪个python版本来创建虚拟环境(which virtualenvwrapper.sh获取的位置) source /usr/local/python3/bin/virtualenvwrapper.sh # 刷新环境变量 source $HOME/.bashrc
-
virtualenvwrapper的使用:
# 创建虚拟环境 mkvirtualenv myenv # 删除虚拟环境 rmvirtualenv myenv # 显示所有的虚拟环境 workon # 切换到现有的虚拟环境 workon myenv # 退出当前虚拟环境 deactivate