python 首次登陆outlook 脚本_记Python“用户环境”的一次完美应用

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

1. 我的使用背景

公司有数以万计的服务器,为了对实现对访问记录进行集中管理以及出于安全考虑,每台服务器都有访问限制,必须使用公司的跳板机才能登陆。

每个公司的员工在跳板机上都有自己的用户、 家目录,对于很多需要 root 权限的操作,是高度受限制的。

比如我现在我要在跳板机上实现远程登陆大批量的机器进行一些维护工作,当然我这里使用的还是 Python 来实现,这个 Python 脚本里有一些依赖库(比如 之前介绍过的 paramiko 这个神器),在跳板机上中并没有安装。

2b922b0d2911cb7455abfc5c41188760.png

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

5bea5a0f83ca61cf3cab87bb2ed1f4b3.png

问题就来了,我如何才能在跳板机中使用 paramiko 这个包呢?

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

既然不能对全局的 Python 环境进行更改,那我完全可以自己再创建一个环境,只要这个环境里事先装好 paramiko 这个包不就好了。

因此,使用虚拟环境是一种解决方案,但它并不是一个完美的解决方案。

原因有以下几点:

1、 创建虚拟环境的过程,步骤较多,比较复杂。这里的复杂是相对于我后面要使用的用户环境而言。

2、 虚拟环境是包含一整个 Python 解释器,存在大量与系统重复的包,size比较大,并不轻便。

3、 使用 console 模式调试的话,进入很不方便

87f9d7b0b4b45cd51b0a9a268fc78c33.png

就算你不使用 console 模式,你调用脚本的方式,也会很奇怪,你得这样

6b1c31c966de8de6d4b572bb5cbb53fb.png

如果你不想使用这样,可以给这个脚本加个可执行权限,并在脚本的第一行指定你的解释器,省去了一点点麻烦,可即便如此,我仍然感觉很别扭。

68663cbc634d233c66d7bbbf22bd9ac7.png

你可能会问我:为什么不使用 virtualenv + virtualenvwrapper ,这样可以使用 workon 进入虚拟环境。

原因是跳板机里的都是很古老的包,你看上面的 Python 还是 2.7.5 呢,所以你所说的那些工具通通没有。

3. 用户环境原理

这里要介绍的这种方案(用户环境),可能很多人都没有使用过,甚至没有听过,它算是一个冷门但是非常好用的功能。

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

先提一个问题,Python 在查找导入包时,如果我们多个路径都有这个包,那 Python 如何确定应该从哪个路径进行导入呢?

答案是, 搜索导入路径是有优先级的,你可以通过 sys.path 进行查看。

bfb1742a44bd3e0e2aa89a3d3042ae67.png

可以看到路径 /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

为了让你理解这个过程,我这里来举个例子,并且验证其是否可以做到用户隔离。

31a18dcaf2ae6b0c274a8bec4696db2a.png
878755a929abc43fb566df994c0188ea.png

有了这个思路,我就可以先在其他机器(前提自己必须拥有管理员权限 )上,创建一个用户环境,并且安装上 paramiko 这个包。

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

然后直接使用 python 进入 console 模式,现在已经可以直接使用 paramiko 这个包了。

7ed19091af5fb3dfdc3dead3e09e5e28.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今日头条、抖音推荐算法原理全文详解!

来源:运营大叔本次分享将主要介绍今日头条推荐系统概览以及内容分析、用户标签、评估分析,内容安全等原理。一、系统概览推荐系统,如果用形式化的方式去描述实际上是拟合一个用户对内容满意度的函数,这个函数需要输入三个维度的变…

星梦缘陈彦妃_浙江舟山80后女演员,2003年出演偶像剧《星梦缘》,还是专业模特...

陈彦妃,1984年2月4日出生于浙江省舟山市,中国内地影视女演员、流行乐歌手、模特。陈彦妃是一个真性情的女孩,在高中时期拍摄了偶像剧《星梦缘》,在这部戏中,陈彦妃基本上是本色出演,进入大学之后&#xff0…

python hstack_Python小白数据科学教程:NumPy (下)

点击“简说Python”,选择“置顶/星标公众号”福利干货,第一时间送达!本文作者:王圣元转载自:王的机器本文偏长(1.8w字),老表建议先收藏,然后转发朋友圈,然后吃饭、休闲时慢慢看&…

MATLAB并行实现的简单方法

此方法只是利用了matlab的设定,不需要额外知识。 众所周知,matlab是单线程的,但matlab的每个应用窗口都是一个线程,因此可以同时开启多个MATLAB跑程序,占满CPU的所有core。 例如处理多个文件的计算,单线程…

POJ 1631 nlogn求LIS

方法一&#xff1a; 二分 我们可以知道 最长上升子序列的 最后一个数的值是随序列的长度而递增的 &#xff08;呃呃呃 意会意会&#xff09; 然后我们就可以二分找值了&#xff08;并更新&#xff09; //By SiriusRen #include <cstdio> #include <cstring> #incl…

城市大脑与未来超级智能建设规范研究报告即将发布

来源&#xff1a;今日头条21世纪以来&#xff0c;特别是在2010年以来&#xff0c;前沿科技领域出现诸多“大脑”概念&#xff0c;企业界出现谷歌大脑&#xff0c;百度大脑&#xff0c;阿里大脑&#xff0c;360安全大脑&#xff0c;腾讯超级大脑等&#xff0c;产业界出现城市大脑…

练习图200例图纸讲解_【宅家数学课23】经典微课6:苏教版六年级下册比例尺典型例题选讲及练习(含答案)...

(截止日期&#xff1a;3月31日)学习过程1、点击观看经典微课&#xff1a;微课视频《比例尺》2、认真学习典型例题&#xff0c;完成下方练习题3、查看答案&#xff0c;在家长指导下批改&#xff0c;订正错误。苏教版小学数学六年级下册比例尺典型例题选讲及练习【考点分析】【例…

ajax datatype_Ajax的基本使用

Asynchronous javascript and xmlAjax的实现 : 基于一个对象XMLHttpRequest (如何获取?)步骤: 1. 获取ajax对象function getRequestObject() {if (window.XMLHttpRequest) {// 支持Opera, Safari, Mozilla, Chrome,Internet Explorer 7, and IE 8.return(new XMLHttpRequest()…

MATLAB画图详细教程

本文将详细介绍如何用matlab绘图并美化。 关于figure() 创建图窗窗口&#xff1a;figure() figure()的属性&#xff1a; Name&#xff1a;在标题栏显示的名称&#xff0c;接字符串&#xff0c;如Test Position&#xff1a;在电脑屏幕上的位置和大小&#xff0c;后接向量[l…

android 发送广播_从0系统学Android--5.2 发送广播

从0系统学Android--52 发送广播本系列文章目录&#xff1a;更多精品文章分类本系列持续更新中…. 初级阶段内容参考《第一行代码》5.3 发送自定义广播前面已经学习了如何接受广播了&#xff0c;下面来学习如何发送自定义广播&#xff0c;广播类型分为&#xff1a;标准广播和有序…

31页官方PPT,回顾史上最大芯片WSE:科技的壮丽美感!

来源&#xff1a;芯潮2019年8月20日&#xff0c;在Hot Chips顶会上&#xff0c;发布了一款震惊世界的芯片&#xff1a;全球有史以来最大的计算机芯片wafer-scale engine &#xff08;WSE&#xff09;问世&#xff01;这款巨型芯片来自美国创企Cerebras&#xff0c;每边约22厘米…

Node.js npm 详解

一、npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分&#xff0c;不过只介绍了linux平台&#xff0c;如果是其它平台&#xff0c;有前辈写了更加详细的介绍。 npm的全称&#xff1a;Node Package Manager. ####&#xff08;1&#xff09;通俗的理解 其实从字面意…

html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注

对图片添加标注和文字是科研图片处理中一个非常基础的操作,Image J也可以进行这方面的处理。 01利用描边和填充添加 在绘制好选区(几乎只会用到箭头工具)之后选择:Edit-Draw(描边,快捷键Ctrl+D),使用事先设定好的颜色和粗细进行绘制;也可以填充设定好的颜色Edit-Fill(填充…

怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML

create&#xff1a;创建表创建用户创建视图创建表create table student(id int,score int) ;student后面与括号之间可以有空格可以没有创建用户create user liuyifei identified by 4852396;drop&#xff1a;删除整个表、删除指定的用户、删除指定的存储空间drop table table_n…

再谈智能

来源&#xff1a;人机与认知实验室1. 智能的产生1.1 智能生成机理有关智能生成的机理&#xff0c;一直是许多领域关注的焦点问题&#xff0c;涉及面之广、深很是少见&#xff0c;初步梳理可能会与这样几个最基本的问题有关&#xff1a;认知生成的机理、知识生成的机理、意…

的图片怎么循环渲染_十分钟教你做个炫酷的图片切换过度效果

做个炫酷的图片切换过度效果首先&#xff0c;今天是520节日。到了520这类为情侣准备的节日&#xff0c;小编都会感到一万点暴击……首先酸一波&#xff0c;搞点事情(蹭波热度)。给大家分享一个520特效页面&#xff1a;看完记得回来为小编点个赞哦&#xff01;这是案例请扫前言老…

《自然》:修复AI神经网络的缺陷

来源&#xff1a;王宏琳科学网博客我在上一篇《海外观察》博客中&#xff0c;介绍了纽约大学马库斯教授和戴维斯教授的新书《重启 AI&#xff1a;构建我们可以信任的人工智能》和图灵奖得主朱迪亚•珀尔的著作《为什么&#xff1a;关于因果关系的新科学》。这两本书都分析了以深…

三. 自动化测试用例设计

1. 主要内容&#xff1a; 2. 手工测试用例与自动化测试用例区别 目前自动化测试更多的时候是定位在冒烟测试和回归测试&#xff1b; 冒烟测试执行的是主体功能点的用例。回归测试执行全部或部分的测试用例。3. 测试类型 4. 异常 5. WebDriver错误截图 get_screenshot_as_f…

c++卸载工具_win7系统如何卸载office2007兼容包

win7系统如何卸载office2007兼容包?office2007是一款热门的办公软件&#xff0c;但有的朋友不习惯使用office2007&#xff0c;但是一些说电脑安装office2007软件后&#xff0c;想要更换其他版本的话&#xff0c;此前需要将office2007卸载掉&#xff0c;不知怎么卸载office2007…

人工智能伦理如何设定,从种群层面看人类的知识积累和进化

前言&#xff1a;9月份中宣部出版局《中国图书评论》对《崛起的超级智能》进行了推荐和评论&#xff0c;对其中阐述的种群知识库扩展观点给予了重点关注。应该说种群知识库扩展是互联网大脑架构不断发展的抽象推论&#xff0c;这个推论对于人工智能及其伦理的建立也应有相应的价…