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

简介: 众所周知,Python发展至今,版本众多,部分版本功能差异较大,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况。同时又因系统底层需调用当前版本Python,所以不能随意变更当前系统Python版本。

本节书摘来自华章出版社《Ansible权威指南 》一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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,具体部署方式如下:
w1
w2
执行pyenv versions命令,有类似如下返回结果表示安装正常:
w3
接下来我们来了解Pyenv的使用方式。
(2)通过Pyenv管理多Python版本
Pyenv命令使用规则如下:
w4
我们通过Pyenv安装Python 3.4.1版本来熟悉其用法。
w5
Pyenv更多用法如下:
w6
至此,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的安装非常简单,操作如下:
w7
返回如下结果表示安装成功:
w8
(2)通过Virtualenv管理多Python版本
需强调说明的是:Virtualenv不是通过多版本管理的方式来实现系统同时兼容多Python环境的,而是其通过在工作目录中虚拟完整的Python环境来实现Python多环境并存。接下来我们看Virtualenv的使用方式。
Virtualenv命令的使用格式如下:
w1_1_1
中括号OPTIONS表示参数选项,是可选项,即可有可无;DEST_DIR表示命令要执行的目录,如:
w10
可用的OPTIONS选项如下:
w11_1
w11_2
下面详细看看virtualenv在工作中的应用方式。我们先创建一个/data/dataf?ile/software/virtualpy/的虚拟工作目录,而后再切换至虚拟环境。
w12
看到如图1-4所示的Virtualenv虚拟工作目录标识,表示已切换至虚拟工作目录。
w13
退出虚拟环境命令如下:
w14
看到如图1-5所示的退出虚拟工作目录显示正常的BASH Shell提示符,表示即已退出虚拟工作目录。
w15

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

相关文章
|
1月前
|
Unix Shell Linux
赞!优雅的Python多环境管理神器!易上手易操作!
赞!优雅的Python多环境管理神器!易上手易操作!
|
1月前
|
存储 Java C语言
【python】——使用嵌套列表实现游戏角色管理
【python】——使用嵌套列表实现游戏角色管理
35 0
|
2月前
|
IDE Linux 开发工具
技术小白如何配置Python环境
技术小白如何配置Python环境
|
3月前
|
机器学习/深度学习 并行计算 算法框架/工具
在Python中进行深度学习环境准备
在Python中进行深度学习环境准备
51 4
|
3天前
|
5G Python
Windows11搭建Python环境(Anaconda安装与使用)
Windows11搭建Python环境(Anaconda安装与使用)
18 0
|
8天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
17 0
|
19天前
|
数据采集 JavaScript C++
Python搭建编程环境-安装Python3解释器
Python搭建编程环境-安装Python3解释器
24 1
|
21天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6
|
1月前
|
Shell Python Windows
通过Python实现win11环境下FTP的上传与下载
通过Python实现win11环境下FTP的上传与下载
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0