一篇文章讲清楚Python虚拟环境

系统 1436 0

Virtualenv

我们都知道Python开发项目很容易,项目也经得起工业级别考验。很多开发者都会习惯用Python开发项目,但是由于我们每个项目情况都有些不一样。比如 今天可能用的是Django 1.8,明天可能用的是Django 2.1。

如果不进行环境隔离全局安装就会导致包的冲突,依赖不同,出现问题。

这个时候每个应用都需要一套「独立」的Python运行环境。而Virtualenv就是拿来为应用创建这一套「隔离」的Python运行环境。

首先用pip安装

pip install virtualenv

创建虚拟环境

            
              sitin@test
              
                :
              
              
                /
              
              data
              
                /
              
              opt
              
                /
              
              test$ virtualenv venv

sitin@test
              
                :
              
              
                /
              
              data
              
                /
              
              opt
              
                /
              
              test$ source venv
              
                /
              
              
                bin
              
              
                /
              
              activate


              
                (
              
              venv
              
                )
              
               sitin@test
              
                :
              
              
                /
              
              data
              
                /
              
              opt
              
                /
              
              test$ deactivate

sitin@test
              
                :
              
              
                /
              
              data
              
                /
              
              opt
              
                /
              
              test$

            
          

Virtualenvwrapper

上面如果我们配置了vitualenvwrapper会更加方便切换进入虚拟环境,做到一键切换进入虚拟环境。不用每次都去到指定项目目录里面进行 source venv/bin/activate。

安装如下:

pip install virtualenvwrappermkdir ~/.virtualenvs

安装好了,你可以在你的.bashrc或者.zshrc配置virtualenvwrapper,配置如下。

            
              export WORKON_HOME
              
                =
              
              $HOME
              
                /
              
              
                .
              
              virtualenvs 
              
                # 指定目录
              
              
export VIRTUALENVWRAPPER_PYTHON
              
                =
              
              
                /
              
              usr
              
                /
              
              
                bin
              
              
                /
              
              python
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS
              
                =
              
              
                '--no-site-packages'
              
              
                # 隔离系统site-packages
              
              
export PIP_VIRTUALENV_BASE
              
                =
              
              $WORKON_HOME
export PIP_RESPECT_VIRTUALENV
              
                =
              
              true

              
                if
              
              
                [
              
              
                [
              
              
                -
              
              r 
              
                /
              
              usr
              
                /
              
              local
              
                /
              
              
                bin
              
              
                /
              
              virtualenvwrapper
              
                .
              
              sh 
              
                ]
              
              
                ]
              
              
                ;
              
               then
source 
              
                /
              
              usr
              
                /
              
              local
              
                /
              
              
                bin
              
              
                /
              
              virtualenvwrapper
              
                .
              
              sh

              
                else
              
              
echo 
              
                "WARNING: Can't find virtualenvwrapper.sh"
              
              
fi

            
          

配置好我们可以创建我们虚拟环境方式如下:

mkvirtualenv your_project #创建rmvitualenv your_project #删除workon # 列出项目workon your_project # 进去某个项目

通过上面这种方式,让我们更加方便切换进入虚拟环境了。

Pyenv

说了vitualenv,vitualenvwrapper,进行Python 包的环境隔离,我们接下来聊聊我们终极利器pyenv – Python版本的隔离。

我们都知道python存在2,3问题,我们经常需要维护老版本Python2项目,也要考虑新版本Python3的迁移。

说它是终极利器是它除了python版本问题,也可以结合virtualenv,vitualenvwrapper一起使用。

目前pyenv这个库在github上面有14K+的star,可见受到到了非常多的关注。

这里面我们直接进入Mac的安装环节:

brew install pyenvbrew install pyenv-virtualenvbrew install pyenv-virtualenvwrapper

把下面的配置加入到我们的shell环境中,比如我的就是.zshrc。

            
              # ---pyenv---
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

            
          

配置好之后,我们可以看到pyenv的shell补全,如下图。

一篇文章讲清楚Python虚拟环境_第1张图片
pyenv的具体使用方式:

            
              pyenv install 
              
                -
              
              l 
              
                # 获取安装列表
              
              
pyenv install 
              
                3.7
              
              
                .1
              
              
                # 安装python3.7
              
              
pyenv 
              
                global
              
              
                3.7
              
              
                .1
              
              
                # 设置全局python
              
              
pyenv virtualenv test
              
                -
              
              pyenv
              
                -
              
              venv 
              
                # 创建虚拟包
              
              
pyenv activate test
              
                -
              
              pyenv
              
                -
              
              venv 
              
                # 进入虚拟环境
              
              
pyenv deactivate 
              
                # 退出
              
              
                .
              
              
                .
              
              
                .
              
            
          

这里面我就不过多演示使用了,看一个官方的配图。
一篇文章讲清楚Python虚拟环境_第2张图片
Tox
上面我们提到了关于使用pyenv进行python2,3的版本隔离情况,实际过程中想要写出兼容Python2,3的代码,那么我们不得不提一下这个测试工具–tox。

tox提供了非常方便的方式来运行我们的不同环境下的测试,非常方便我们在写测试的时候,同时对Python2,Python3的环境进行测试,这里面强烈推荐大家使用。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论