记Python “用户环境”的一次完美使用

云栖号资讯:【点击检查更多职业资讯】
在这儿您能够找到不同职业的榜首手的https://www.fons.com.cn/tag/%e4%b8%8a%e4%ba%91" target="_blank">上云资讯,还在等什么,快来!


在之前写过一篇关于虚拟环境运用的文章,可是还没有好好的介绍一下 Python 的用户环境,原因是自己一向没遇到要运用 用户环境 的运用场景,所以就一向懒得写。恰巧这两天,自己遇到了一个运用用户环境的体会能够完爆虚拟环境的事例,就拿出来共享一下。

1. 我的运用布景

公司有数以万计的服务器,为了对完成对拜访记载进行会集办理以及出于安全考虑,每台服务器都有拜访约束,有必要运用公司的跳板机才干登陆。

每个公司的职工在跳板机上都有自己的用户、 家目录,关于许多需求 root 权限的操作,是高度受约束的。

比方我现在我要在跳板机上完成远程登陆大批量的机器进行一些保护作业,当然我这儿运用的仍是 Python 来完成,这个 Python 脚本里有一些依靠库(比方 之前介绍过的 paramiko 这个神器),在跳板机上中并没有装置。

记Python “用户环境”的一次完美使用

做为普通用户的你,是没有权限装置第三方包的。

记Python “用户环境”的一次完美使用

问题就来了,我怎样才干在跳板机中运用 paramiko 这个包呢?

2. 为何不运用虚拟环境?

已然不能对大局的 Python 环境进行更改,那我完全能够自己再创立一个环境,只需这个环境里事前装好 paramiko 这个包不就好了。

因而,运用虚拟环境是一种解决计划,但它并不是一个完美的解决计划。

原因有以下几点:

1、 创立虚拟环境的进程,进程较多,比较杂乱。这儿的杂乱是相关于我后边要运用的用户环境而言。

2、 虚拟环境是包括一整个 Python 解说器,存在很多与体系重复的包,size比较大,并不简便。

3、 运用 console 形式调试的话,进入很不便利

记Python “用户环境”的一次完美使用

就算你不运用 console 形式,你调用脚本的方法,也会很古怪,你得这样

记Python “用户环境”的一次完美使用

假如你不想运用这样,能够给这个脚本加个可执行权限,并在脚本的榜首行指定你的解说器,省去了一点点费事,可即便如此,我依然感觉很别扭。

记Python “用户环境”的一次完美使用

你或许会问我:为什么不运用 virtualenv + virtualenvwrapper ,这样能够运用 workon 进入虚拟环境。

原因是跳板机里的都是很陈旧的包,你看上面的 Python 仍是 2.7.5 呢,所以你所说的那些东西统统没有。

3. 用户环境原理

这儿要介绍的这种计划(用户环境),或许许多人都没有运用过,乃至没有听过,它算是一个冷门可是十分好用的功用。

操作之前 ,先简略介绍一下它。

先提一个问题,Python 在查找导入包时,假如咱们多个途径都有这个包,那 Python 怎样确认应该从哪个途径进行导入呢?

答案是, 查找导入途径是有优先级的,你能够经过 sys.path 进行检查。

记Python “用户环境”的一次完美使用

能够看到途径 /home/wangbm/.local/lib/python2.7/site-packages 是优先于 /usr/lib64/python2.7/site-packages 途径的。

这便是 用户环境 的原理,只需咱们将包装在自己家目录下,就能够优先于大局环境中进行查找。

运用起来,能够做到用户无感知,跟运用原生的大局环境并没有差异。

4. 详细操作方法

创立一个用户环境,并装置上你所需求的包,一条指令就能搞定,这可比虚拟环境简略便利多了。

那么怎样操作呢?

只需你在运用 pip 装置包时,加上 --user 参数,pip 就会将其装置在当时用户的 ~/.local/lib/python2.x/site-packages 下,而其他用户的 python 则不会受影响。

$ pip install --user pkg

这儿要注意的是,不能运用这种方法,亲测它会将包装到大局环境下,详细原因我还没有深究。

$ python -m pip install --user pkg

为了让你了解这个进程,我这儿来举个比如,而且验证其是否能够做到用户阻隔。

记Python “用户环境”的一次完美使用
记Python “用户环境”的一次完美使用

有了这个思路,我就能够先在其他机器(条件自己有必要具有办理员权限 )上,创立一个用户环境,而且装置上 paramiko 这个包。

然后将这个用户环境,紧缩复制至跳板机自己的家目录下的 .local/lib 目录下并解压。

然后直接运用 python 进入 console 形式,现在现已能够直接运用 paramiko 这个包了。

记Python “用户环境”的一次完美使用

【云栖号在线讲堂】每天都有产品技能专家共享!
课程地址:https://yqh.aliyun.com/live

当即参加社群,与专家面对面,及时了解课程最新动态!
【云栖号在线讲堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时刻:2020-04-29
本文作者:王一白
本文来自:“掘金”,了解相关信息能够重视“掘金”