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

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

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

Virtualenv

咱们都知道Python开发项目很容易,项目也经得起工业级别考验。不少开发者都会习惯用Python开发项目,可是因为咱们每一个项目状况都有些不同。好比 今天可能用的是Django 1.8,明天可能用的是Django 2.1。github

若是不进行环境隔离全局安装就会致使包的冲突,依赖不一样,出现问题。shell

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

首先用pip安装app

pip install virtualenv工具

建立虚拟环境测试

sitin@test:/data/opt/test$ virtualenv venv
sitin@test:/data/opt/testsource venv/bin/activate 
(venv) sitin@test:/data/opt/test$ deactivate
sitin@test:/data/opt/test$
复制代码

Virtualenvwrapper

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

安装以下:spa

pip install virtualenvwrapper mkdir ~/.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 pyenv brew install pyenv-virtualenv brew install pyenv-virtualenvwrapper

把下面的配置加入到咱们的shell环境中,好比个人就是.zshrc。

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

配置好以后,咱们能够看到pyenv的shell补全,以下图。

pyenv的具体使用方式:

pyenv install -l # 获取安装列表
pyenv install 3.7.1 # 安装
python3.7pyenv global 3.7.1 # 设置全局
pythonpyenv virtualenv  test-pyenv-venv # 建立虚拟包pyenv activate test-pyenv-venv # 进入虚拟环境
pyenv deactivate  # 退出...
复制代码

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

image

Tox

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

tox提供了很是方便的方式来运行咱们的不一样环境下的测试,很是方便咱们在写测试的时候,同时对Python2,Python3的环境进行测试,这里面强烈推荐你们使用。

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

image

往期回顾:

习惯养成计划

相关文章
相关标签/搜索