Ansible权威指南 》一1.8 Python多环境扩展管理

1.8 Python多环境扩展管理

众所周知,Python发展至今,版本众多,部分版本功能差异较大,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况。同时又因系统底层需调用当前版本Python,所以不能随意变更当前系统Python版本。如此情景下就会有Python多版本共存的情况。于是,Python多环境管理工具应运而生。这里为大家介绍两款工具,分别是Pyenv和Virtualenv。Pyenv和Virtualenv均为Python管理工具,不同的是,前者是对Python的版本进行管理,实现不同版本间的切换和使用;而后者则通过创建虚拟环境,实现与系统环境以及其他Python环境的隔离,避免相互干扰。

1.8.1 Pyenv的部署与使用

Pyenv是一个简单的Python版本管理工具,以前叫作Pythonbrew。它让你能够方便地切换全局Python版本,安装多个不同的Python版本,设置独立的某个文件夹或者工程目录特异的Python版本,同时创建Python虚拟环境(virualenv's)。所有这些操作均可以在类UNIX系统的机器上(Linux和OS X)不需要依赖Python本身执行,而且它工作在用户层,不需要任何sudo操作。
(1)部署
Pyenv作为Python的版本管理工具,通过改变Shell的环境变量来切换不同的Python版本,以达到多版本共存的目的。该工具不支持Windows系统。具体工作原理如下。
1)Pyenv安装后会在系统PATH中插入shims路径,每次执行Python相关的可执行文件时,会优先在shims里寻找Python路径~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin;
2)系统选择Python版本,依如下顺序选择Python的版本:
Shell变量设置(执行pyenv shell查看)
当前可执行文件目录下的.python_version文件里的版本号(执行pyenv shell查看)
上层目录查询找到的第一个.pyenv-version文件
全局的版本号在~/.pyenv/version文件内(执行pyenv global查看)
3)确定版本文件的位置和Python版本后,Pyenv会根据版本号在~/.pyenv/versions/文件夹中查找对应的Python版本。执行命令pyenv versions可查看系统目前安装的Python版本。
接下来开始部署Pyenv,具体部署方式如下:


执行pyenv versions命令,有类似如下返回结果表示安装正常:

接下来我们来了解Pyenv的使用方式。
(2)通过Pyenv管理多Python版本
Pyenv命令使用规则如下:

我们通过Pyenv安装Python 3.4.1版本来熟悉其用法。

Pyenv更多用法如下:

至此,Pyenv介绍完毕,接下来再介绍一款Python多管理工具Virtualenv,它不是通过多版本管理的方式来实现系统同时兼容多Python环境。Virtualenv是底层基于Python开发的Python环境隔离工具,其通过虚拟目录的方式来实现多环境的并存。其工作原理很简单:在你所需的地方创建工作目录,该目录类似系统安装的Python目录,保留完整的Python环境、解释器、标准库和第三方库等,当我们需要时,切换环境变量激活即可使用。接下来我们进一步学习Virtualenv的安装部署及版本管理。

1.8.2 Virtualenv的部署与使用

Python的第三方包成千上万,在一个Python环境下开发时间越久、安装依赖越多,就越容易出现依赖包冲突的问题。为了解决这个问题,开发者们开发出了Virtualenv,它可以搭建虚拟且独立的Python环境。这样就可以使每个项目环境与其他项目独立开来,保持环境的干净,避免包冲突问题。另外,在开发Python应用程序的时候,所有第三方的包都会被PIP安装到系统Python版本的site-packages目录下。但如果我们要同时开发多个应用程序,那这些应用程序会共用一个Python,这意味着所有的包都安装在系统的Python目录下,这不仅影响我们的正常开发工作,还有可能因为随意变更系统Python版本信息而造成系统的不稳定。这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。Virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境的。下面我们来看看Virtualevn的部署,以及它如何管理Python环境。
(1)部署
假设你已经学习过我们上节内容并安装好PIP了,那么Virtualenv的安装非常简单,操作如下:

返回如下结果表示安装成功:

(2)通过Virtualenv管理多Python版本
需强调说明的是:Virtualenv不是通过多版本管理的方式来实现系统同时兼容多Python环境的,而是其通过在工作目录中虚拟完整的Python环境来实现Python多环境并存。接下来我们看Virtualenv的使用方式。
Virtualenv命令的使用格式如下:

中括号OPTIONS表示参数选项,是可选项,即可有可无;DEST_DIR表示命令要执行的目录,如:

可用的OPTIONS选项如下:


下面详细看看virtualenv在工作中的应用方式。我们先创建一个/data/dataf?ile/software/virtualpy/的虚拟工作目录,而后再切换至虚拟环境。

看到如图1-4所示的Virtualenv虚拟工作目录标识,表示已切换至虚拟工作目录。

退出虚拟环境命令如下:

看到如图1-5所示的退出虚拟工作目录显示正常的BASH Shell提示符,表示即已退出虚拟工作目录。

至此,多版本Python环境管理工具Pyenv和Virtualenv介绍完毕。如果基于系统默认Python版本安装有问题,可尝试基于Pyenv或Virtualenv切换Python版本后,再次重试1.7节Ansible的安装步骤。

时间: 2024-09-17 08:37:55

Ansible权威指南 》一1.8 Python多环境扩展管理的相关文章

《Ansible权威指南》一1.8 Python多环境扩展管理

1.8 Python多环境扩展管理 众所周知,Python发展至今,版本众多,部分版本功能差异较大,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况.同时又因系统底层需调用当前版本Python,所以不能随意变更当前系统Python版本.如此情景下就会有Python多版本共存的情况.于是,Python多环境管理工具应运而生.这里为大家介绍两款工具,分别是Pyenv和Virtualenv.Pyenv和Virtualenv均为Python管理工具,不同的是,前者是对

《Ansible权威指南 》一 3.3 Ad-Hoc组管理和特定主机变更

3.3 Ad-Hoc组管理和特定主机变更 3.2节为大家介绍了Ansible模块列表及HELP说明获取方式.日常运维工作中,我们往往会将负责相同场景应用的主机划分为一个组,以方便统一管理.Ansible也提供了简洁但强大的组管理功能.同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境. 3.3.1 Ad-Hoc组定义 Ad-Hoc的组功能定义在Inven

《Ansible权威指南》一3.3 Ad-Hoc组管理和特定主机变更

3.3 Ad-Hoc组管理和特定主机变更 3.2节为大家介绍了Ansible模块列表及HELP说明获取方式.日常运维工作中,我们往往会将负责相同场景应用的主机划分为一个组,以方便统一管理.Ansible也提供了简洁但强大的组管理功能.同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境. 3.3.1 Ad-Hoc组定义 Ad-Hoc的组功能定义在Inven

Ansible权威指南.

Linux/Unix技术丛书 Ansible权威指南 李松涛 魏 巍 甘 捷 著 图书在版编目(CIP)数据 Ansible权威指南 / 李松涛,魏巍,甘捷著. -北京:机械工业出版社,2016.11 (Linux/Unix技术丛书) ISBN 978-7-111-55329-8 I. A- II. ①李- ②魏- ③甘- III. 程序开发工具-指南 IV. TP311.561-62 中国版本图书馆CIP数据核字(2016)第258615号 Ansible权威指南 出版发行:机械工业出版社(北

《Ansible权威指南 》一 导读

前 言 为什么要写这本书 首次接触Ansible是缘于一次杭州出差.当时接触互联网3年左右,正是技能的储备阶段,看到Ansible这样的新兴自动化工具不免充满好奇.当时腾讯的蓝鲸还没有出来,但abs脚本和ijobs自动化体系已经应用多年,并在整个IEG中心广泛应用.大型企业讲究分工精细化,各司其职,强大的自我研发能力.但伴随业绩和KPI的压力,很多人其实是没有多余精力关注外界技术领域的发展,尤其是游戏行业,行业自身属性对开发人员的技术能力要求非常高,前沿开源技术与业务特殊性需求并不能很好地融合,

《Ansible权威指南》一1.9 本章小结

1.9 本章小结 Ansible是运维自动化工具的后起之秀.本章前半部分我们学习了Ansible是什么,底层通信发展史,Ansible发展历程等概念性知识.后半部分我们详细介绍了Ansible安装部署方式,同时考虑本地复杂环境可能导致的部署问题,本章后半部分我们也引申介绍了Python多环境扩展管理,以方便大家应对部署过程中可能出现的各类问题.当然,Ansible的部署总体非常简单,一般出问题多数是因为系统的glibc.gcc等开发环境没有安装或不完整导致.在学习过程中还请严格参考本章安装操作步

《Ansible权威指南 》一1.9 本章小结

1.9 本章小结 Ansible是运维自动化工具的后起之秀.本章前半部分我们学习了Ansible是什么,底层通信发展史,Ansible发展历程等概念性知识.后半部分我们详细介绍了Ansible安装部署方式,同时考虑本地复杂环境可能导致的部署问题,本章后半部分我们也引申介绍了Python多环境扩展管理,以方便大家应对部署过程中可能出现的各类问题.当然,Ansible的部署总体非常简单,一般出问题多数是因为系统的glibc.gcc等开发环境没有安装或不完整导致.在学习过程中还请严格参考本章安装操作步

《Ansible权威指南》一第2章

第2章 Ansible基础元素介绍 第1章介绍了Ansible的功能作用.通信发展史.基础的安装部署及处理Ansible安装问题所需的Python多环境管理工具Pyenv和Virutalenv.在前期基本工作准备妥当的基础上,本章进一步深入学习Ansible的基础元素,会相继接触Ansible目录结构简介.Ansible系列命令.Ansible Inventory配置规范.Ansible模式匹配规则等,其中部分内容,诸如Inventory.Ansible-playbook等在后续涉及章节会更深入

《Ansible权威指南》一1.1 Ansible是什么

1.1 Ansible是什么 随着移动互联.物联网.互联网+.大数据.云计算等大规模应用的催生推动,以及人们日常生活的互联网化,互联网的蓬勃发展不仅冲击影响着整个经济体,更对人们的生活理念影响深远.在体验到互联网带来的便利和舒适的同时,人们也不再满足于"可以用",而是要"用得爽",在政策.需求.利益.趋势等原因的刺激下,互联网的发展速度可想而知.众所周知,智能的背后意味着复杂,这一现象在互联网的发展中体现得淋漓尽致.在互联网迅猛发展的同时,运维这个工种也从默默无闻的