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

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

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

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

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,配置如下。

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补全,如下图。

image.png

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  # 退出
...

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

image.png

Tox

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

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

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

相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能垃圾分类与环境保护
使用Python实现深度学习模型:智能垃圾分类与环境保护 【8月更文挑战第7天】
49 2
|
21天前
|
Python
揭秘Python编程核心:一篇文章带你深入掌握for循环与while循环的奥秘!
【8月更文挑战第21天】Python中的循环结构——for循环与while循环,是编程的基础。for循环擅长遍历序列或集合中的元素,如列表或字符串;而while循环则在未知循环次数时特别有用,基于某个条件持续执行。本文通过实例展示两种循环的应用场景,比如用for循环计算数字平方和用while循环计算阶乘。此外,还通过案例分析比较了两者在处理用户输入任务时的不同优势,强调了根据实际需求选择合适循环的重要性。
34 0
|
8天前
|
Python
Python的Virtualenv与Venv环境管理器
介绍Python的两种环境管理工具Virtualenv和venv,包括它们的安装、创建、激活、退出环境以及查看帮助信息的方法,同时对比了两者的特点和使用场景。
18 2
Python的Virtualenv与Venv环境管理器
|
8天前
|
Python
Python软件包及环境管理器conda实战篇
详细介绍了如何使用conda进行Python软件包管理及环境管理,包括查看、安装、卸载软件包,切换源,管理不同版本的Python环境,以及解决使用过程中可能遇到的错误。
29 2
Python软件包及环境管理器conda实战篇
|
15天前
|
Ubuntu 开发者 Python
|
14天前
|
C++ Python
VS Code 搭建 Python 环境 Conda管理
VS Code 搭建 Python 环境 Conda管理
29 2
|
26天前
|
机器学习/深度学习 Ubuntu 数据挖掘
Ubuntu系统部署Anaconda环境及Python语言的详细流程
以上就是在Ubuntu系统中安装Anaconda环境及Python语言的详细流程。Anaconda为Python科学计算提供了便捷的管理方式,帮助用户轻松处理不同项目之间依赖管理的复杂性。通过以上步骤,你现在应该有了一个完全可用的Anaconda环境,可以开始在Ubuntu上进行Python编程和数据科学项目的探索了。
27 5
|
30天前
|
IDE Linux 开发工具
如何安装Python环境?
【8月更文挑战第13天】如何安装Python环境?
45 3
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能环境监测与预警
【8月更文挑战第11天】 使用Python实现深度学习模型:智能环境监测与预警
58 2
|
14天前
|
Linux Python
Centos7安装Python虚拟环境之virtualenv
Centos7安装Python虚拟环境之virtualenv