python虚拟环境Virtualenv的使用

好记性不如破博客,还是记录备忘的好。
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用

安装
sudo apt-get install python-virtualenv
使用方法
virtualenv [虚拟环境名称]
如,创建**ENV**的虚拟环境

virtualenv ENV
默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 –no-site-packages建立虚拟环境

virtualenv –no-site-packages [虚拟环境名称]
启动虚拟环境
cd ENV
source ./bin/activate
注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。

退出虚拟环境
deactivate
在虚拟环境安装Python套件
Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:

pip install [套件名称]
如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:

export PIP_REQUIRE_VIRTUALENV=true
或者让在执行pip的时候让系统自动开启虚拟环境:

export PIP_RESPECT_VIRTUALENV=true
Virtualenvwrapper
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
1. 将所有虚拟环境整合在一个目录下
2. 管理(新增,删除,复制)虚拟环境
3. 切换虚拟环境
4. …

安装
sudo easy_install virtualenvwrapper
此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。

创建目录用来存放虚拟环境

mkdir $HOME/.virtualenvs
在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs

在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh

运行: source ~/.bashrc

此时virtualenvwrapper就可以使用了。

列出虚拟环境列表

workon
也可以使用

lsvirtualenv
新建虚拟环境

mkvirtualenv [虚拟环境名称]
启动/切换虚拟环境

workon [虚拟环境名称]
删除虚拟环境

rmvirtualenv [虚拟环境名称]
离开虚拟环境

deactivate

程序员如何增涨自己的收入?

程序员的收入是广受关注的问题,很多人从业3~5年之后就会遇到这个收入瓶颈。尽管物价不断上涨,程序员尤其是初、中级程序员的收入不升反降。即使上次在某个文章中看到有中国第一程序员之称的某位,月薪也只有3万,尽管这个数字已经很高了,但这个“中国第一”,也只有众多小型软件企业总监级别的收入而已。为什么这么高水平的技术人员在公司中的位置仍然显得与日俱降?本文会分析其中的原因,并依据原因给出相应的建议,为收入遇到瓶颈的程序员找到出路。

要理解一个人能赚多少钱,先要理解钱的流转规律。对于程序员,总是认为若自己能力提升了,自己的收入就应该相应提升。不过,请先读一下任正非写给华为员工的邮件中的一段文字:

因此,没有责任心,不善于合作,不能集体奋斗的人,等于丧失了在华为进步的机会。那样您会空耗了宝贵的光阴,还不如试用期中,重新决定您的选择。进入华为并不意味着高待遇,因为公司是以贡献定报酬的,凭责任定待遇。对新来员工,因为没有记录,晋升较慢,为此十分歉意。如果您是一个开放系统,善于吸取别人的经验,善于与人合作,借助别人提供的基础,可能进步就会很快。

从中可以看出,先要替公司赚到钱,承担责任,一个员工才能拿到钱。

分析

若一个程序员技术水平一个顶十个,在他替公司赚钱的道路上还有哪些障碍呢?典型障碍有很多,比如:

1. 这个程序员开发的功能中有50%客户不常使用

因此,客户要么没有选择这个产品,要么只愿意付出更低的价格。“这怪产品经理啊,为什么怪我?”错。若赚到了钱,论功行赏的分配方法有很多;但若赚不到钱,分配方法就一种:大家都没钱。也就是在一家产品方向失败的公司,即使最顶级的程序员,也赚不到钱;或者说,他赚到的钱,可能还不如一个产品方向正确的公司的一个普通程序员。

2. 这个程序员开发的底层库中,有50%不被调用

很多顶级的程序员都迷恋编写底层库,认为这才是施展技术实力的地方;他们多数不愿意参与业务级别的工作,认为工作过于简单还要和客户打交道。这时候编写出来的东西,经常会出现“需求镀金”,就是最终代码中充斥着大量的无用的功能。本人做过一段这种事情,所编写的一个库,可能几年后使用率也不超过一半。

如果这两个问题不解决,我们表面上看到的看到的10倍的能力,真正能转化到生产力上的不足25%。公司的钱赚不来,个人收入低的问题也就很好理解了。

3.顶尖高手在公司内部的位置已经不再重要

现在已经不是当年两个修自行车的能造飞机的英雄时代了。现在的软件很少像当年KV300、WPS一样可以由一个高手独立写成,多数都依托于一个十多人乃至近百人的大型团队。如果这个团队的整体实力很强,里边一个顶三、五个的程序员大有人在,那么单个的能顶十个的程序员贡献能有多大,就值得商讨了。
在10年前参与的一家公司中,有一位自己躲在自己办公室的“扫地僧”,功力超过我们团队的最顶级的程序员还要数倍。不过,他却在独立开发一个与公司方向不符的小产品,由于他是老板的朋友,老板也执拗不过,就随他去了。几年后公司上市,不过是因为我们所在的25人团队的产品占据市场份额60%以上。毕竟这种规模的团队,如果技术和管理又能跟得上(这个团队就是本人第一次遇到松结对编程、139团队的那个团队),生产力不是一个两个游击队员能够相比的。如果不能把自己的能力转化为企业的盈利,收入就无从谈起。

答案

有了这两个分析,就不难得到答案,整体上分两个方向,最后我们再总结两个截然不同的方向的共同点。

一个方向,是转向关注业务。
具体说来,包括成为产品经理,或称为对产品需求负有责任的技术兼业务高手。
为何产品经理的收入很高?三星刚刚重奖了GalaxyIII的产品经理,而腾讯、阿里的产品经理也久负盛名,而他们的所谓“高级程序员”一般都默默无闻。原因就是产品经理是“掌舵”的,不是“划船”的,他对团队生产力的贡献,不是加法,而是乘法。国内征途以几十人团队每年几亿的收入,腾讯以9千人超过中国电信5万人的营业额,国外Apple及FB的崛起,靠的不是技术高手的加法,而是产品经理的乘法。
作为纯技术高手,可能直接转为产品经理很难,或者不愿意转,那么,至少要变成关心需求的技术兼业务高手。也就是不能只沉迷技术,而要关心是否正在开发客户关注的核心需求,业务实现是否有效、友好,与竞争对手定位于功能比较等内容。

作为掌舵的人,更容易帮助团队把技术能力转化为生产力,提升绩效,也更容易获得更高的收入。

第二个方向,是作为技术领导。
将自己的技术与管理结合起来,提升整个团队的战斗力。
技术高手作为团队的领导具有得天独厚的优势,毕竟软件管理是个复杂的过程,需要结合技术、团队、过程的各方面才能做好。
比如设定这样一个目标:“促进团队的代码复用,以提升进度和质量。”个人参与过的几个项目都证明做好这件事情意义非比寻常,然而做好却很难。个别技术高手可以以1/4代码写出相同的功能,然而整个团队却很难做到,原因是缺少恰当的团队管理方法。而作为纯管理出身的项目经理,又不理解应该建立何种复用结构,如何分工。要让纯管理的人跨越技术壁垒是比登天,而让技术高手帮助进行管理则只是一念之间的事情(虽然也很难!)。

如果一个高手,能够帮助自己身边的三、五个程序员提升水平,那么很容易再获得相当于几个人的生产力,这是他个人提升所很难再获得的。本人在十年前遇到一位高手,跟他学了一年,感觉自己提升了三四倍的水平(从完成任务所需的功能量缩减而言,何况还有技术、质量方面的提升),而身边另外几个师兄弟,也都长进迅速,有一两个甚至都超过了师傅的水平。除了传授技术之外,这个团队后来在这位高手带领下,还改善了管理结构,演进成为一个松结对和1-3-9团队,在不到一年时间从5人扩展到25人,而产品质量没有明显的下降,后来市场占有率更是达到60%以上。

这两个方向有一个共同点,就是把自己卓越的技术能力对团队的贡献,从加法变成乘法。高手必须认识到自己对团队和企业的最大贡献,不是自己独立承担的那点任务,而是影响产品和影响团队的能力。
最后一个常见问题:

“我传授了徒弟,最后却被一脚踢掉怎么办?”这是很多技术高手所担心的事情。其实,老板都是很聪明的人,技术、管理、业务可能都一般,但识人、用人绝对超过我们,否则怎么会我们给他打工呢!一个高手如果被踢掉,更可能是因为沉迷技术逐渐变得钻牛角尖、封闭,最终变成无用之人。

马利克:六大有效的管理原则

为什么大家对管理有许多误解?原因是基本上,关于管理的本质一直欠缺厘清。什么是管理?管理是一门艺术,还是一门科学?

我认为,探讨这些议题的最佳方式,是把管理视为一门实务(practice),就像医生或工程师的专业,重要的不是理论对不对,而是行动成不成功。好医生的真正成功处不在于诊断,而在于治愈病人,应用与行动是所有专业必不可缺的部分,这是它们和科学明显不同之处。

把管理视为一门专业,就能促成相当程度的进步。更确切地说,就是把一门艺术中可以被教导和学习的东西,透过训练,让更多人学会。我也希望藉此激发专业精神——勤奋、认真、周详彻底,这些是专业的责任。

新时代的有效管理

有效管理的原则包括注重结果、对整体做出贡献、专注于少数事项、利用长处、信任、正面思维。

1.注重结果:每个组织都需要结果,组织成立的目的就是为了达成结果。不只是企业,包括学校、医院、救世军、军方组织,或提倡世界和平的某个社团,都必须达成结果,只是结果不仅仅是经济性质的。

有些观念会妨碍注重结果的原则,例如主张工作应该是一种乐趣。我们应该省思以下几点:

一、没有任何一个职务能永远令人感到快乐;
二、每一项职务都有绝非人人都喜欢的成
三、任何社会中皆存在某些不是人人都喜欢担任的职务。

所以我们不应专注于工作本身的乐趣,而是应该着重工作的结果,良好的结果应该带来喜乐与荣耀,并找到生命中最重要的东西——意义。

2.对整体做出贡献:从那些优良、有成效的经理人的思维和行动中,可以看出他们都具有全方位思考的习惯,很容易设想到全体。他们会从伏案中抬起头来,向窗外凝视沉思:「我的领域专长对这个世界和这个组织有何意义?我的所作所为能使谁获益?」这种思考方式是顾客导向的基础,也是创业家思维的要素。

3.专注于少数事项:几乎任何以成就闻名的人,都是专注于一件事。专注是达成结果之匙。专注原则首先应运用在时间管理,高效经理人每单位时间只处理一件事,处理完第一件事后,才处理第二件。

专注原则的第二个重要应用例子是目标管理。年度目标如果只有两、三项,才是真正重要而且人们想完成的事项。专注,是解决大多数经理人最头痛的压力问题的唯一方法。

4.利用长处:大多数人很容易找出别人的弱点,因为它们惹人烦恼,导致麻烦。学校也一向着重消除弱点,因为他们必须使每个小孩具备将来不论从事什么工作都必须具备的起码技能。

但是,没有人因为仅仅具备基本能力就能在职场上成功。人们会成功、有成效,是因为他们具有长处并发挥了长处。所以经理人必须辨识并发挥部属的长处,让他们专注于长处,以创造巅峰绩效。至于他们的缺点,组织应该使人们的弱点无足轻重,不会导致重要影响。

5.信任:如果经理人能维持周遭者的信任,他们就建立了强健而坚实的管理环境,有韧性而不易受伤害。

如何建立信任?最简单的原则就是部属有错时替部属扛责任、成功时归功劳给部属。另外,真诚和正直才能赢得信任。信任也建立于可预测性和可靠性的基础之上,我们的游戏规则和言辞都必须确凿、有效。

6.正面思维:经理人常被视为问题的解决者,不过辨识及利用机会比解决问题更重要。正面思维使经理人把注意力转向机会,他们也比较可能找到解决方法。要在困境中寻找机会,这跟自我激励的修炼有密切关联,许多运动教练和运动员都会实行的「心智训练」法很有效,可以在关键时刻让自己专注,控制怯场和紧张不安。

以上这些管理的原则,是企业文化的核心,也将决定管理工作的质量。经理人必须遵守并学习这些原则,也要了解它们彼此之间的关联性。