美文网首页程序员码农的世界
终极利器|一篇文章讲清楚Python虚拟环境

终极利器|一篇文章讲清楚Python虚拟环境

作者: b4a0155c6514 | 来源:发表于2019-01-26 11:54 被阅读6次

    我在之前写过一篇「Python新手常见的几个问题及工具推荐」说过新手往往没有注意环境隔离,导致Python项目包与包之间冲突。

    并且Python2与3代码执行有问题等等。鉴于此我今天给大家聊聊关于Python环境隔离问题以及如何进行隔离。

    学习Python中有不明白推荐加入交流群

                    号:864573496

                    群里有志同道合的小伙伴,互帮互助,

                    群里有不错的视频学习教程和PDF!

    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 virtualenvwrapper

    mkdir ~/.virtualenvs

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

    exportWORKON_HOME=$HOME/.virtualenvs# 指定目录

    exportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python

    exportVIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'# 隔离系统site-packages 

    exportPIP_VIRTUALENV_BASE=$WORKON_HOME

    exportPIP_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 pyenv

    brew install pyenv-virtualenv

    brew install pyenv-virtualenvwrapper

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

    # ---pyenv---

    exportPATH="$HOME/.pyenv/bin:$PATH"

    eval"$(pyenv init -)"

    eval"$(pyenv virtualenv-init -)"

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

    pyenv的具体使用方式:

    pyenvinstall-l# 获取安装列表

    pyenvinstall3.7.1# 安装python3.7

    pyenvglobal3.7.1# 设置全局python

    pyenv virtualenvtest-pyenv-venv# 创建虚拟包

    pyenvactivatetest-pyenv-venv# 进入虚拟环境

    pyenv deactivate# 退出

    ...

    这里面我就不过多演示使用了,看一个官方的配图。

    Tox

    上面我们提到了关于使用pyenv进行python2,3的版本隔离情况,实际过程中想要写出兼容Python2,3的代码,那么我们不得不提一下这个测试工具--tox。

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

    最后关于虚拟环境实际Python3 官方有原生venv支持虚拟环境代替vitualenv目前接受度还较低,大家感兴趣可以去了解下。我们虚拟环境就暂时聊到这儿,欢迎你给我留言,谈谈你的一些看法或思考。

    相关文章

      网友评论

        本文标题:终极利器|一篇文章讲清楚Python虚拟环境

        本文链接:https://www.haomeiwen.com/subject/ywqijqtx.html