python 2.7.6环境搭建

为何写脚本

每次用新的机器,都要把python的环境给安装一遍~so,这是一件很操蛋的问题,就shell练手写了一个code,嘿嘿,渣渣技术~

测试环境

我爱vagrant,一条命令直接还原成干净的测试环境,大爱啊~

脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/bin/bash
# Auther: zhuima
# Date:   2014-06-26
# Function: create python env
#
 
 
REVTAL=0
 
# import Functions 
 
/etc/rc .d /init .d /functions
 
# check network
 
/etc/sysconfig/network
 
if  [ $NETWORKING =  'no'  ]; then
     exit  $REVTAL
fi
 
# install epel yum source
 
function  epel_install(){
     if  rpm --version &> /dev/null ; then
         rpm -ivh  http: //mirrors .ustc.edu.cn /fedora/epel/6/x86_64/epel-release-6-8 .noarch.rpm
     else
         exit  $REVTAL
         print  "please checking your yum configure!"
     fi
}
 
 
# install base packages
 
function  base_packages(){
      if  yum repolist &> /dev/null ; then
          yum  install  yum  install  zlib-devel  bzip2 -devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel patch -y
      else 
          exit  $REVTAL
          print  "please checking your yum configure!"
      fi
}
 
 
# install pip
 
function  pip_install(){
     if  yum repolist &> /dev/null ; then
         yum  install  python-pip -y
     else
         exit  $REVTAL
             print  "please checking your yum configure!"
         fi
}
 
# install ipython
 
function  ipython_install(){
     if  yum repolist &> /dev/null ; then
         yum  install  ipython -y
     else
     exit  $REVTAL
         print  "please checking your yum configure!"
     fi
}
 
# install pyenv    
 
function  pyenv_install(){
     if  git --version  &> /dev/null ; then
         cd  /` whoami ` && git clone git: //github .com /yyuu/pyenv .git .pyenv  
     else
         yum  install  git -y
         cd  /` whoami ` && git clone git: //github .com /yyuu/pyenv .git .pyenv  
     fi
}
 
# setting pyenv env
 
function  pyenv_env(){
 
echo  'export PYENV_ROOT=$HOME/.pyenv'  >>  /etc/profile
echo  'export PATH=$PYENV_ROOT/bin:$PATH'  >>  /etc/profile
#echo 'eval $(pyenv init -)' >> /etc/profile
 
# exec pyenv.sh
if  [ -e  /etc/profile  ]; then
     source   /etc/profile
else
     echo  "Files is not exists"
     exit  $REVTAL
fi
 
}
 
# install python 2.7.6
 
function  python_install(){
     if  pyenv versions &> /dev/null ; then
         pyenv  install  2.7.6
     else
         exit  $REVTAL
         print  "please checking your pyenv configure"
     fi
}
 
# install ansible
 
function  install_ansible(){
     if  pip --version &> /dev/null ; then
         pip  install  ansible
     else
         yum  install  pip -y
         pip  install  ansible
     fi
 
}
 
while  :; do
cat  << EOF
+-------------------------------------------+
|1、Install epel_install                    |
|2、Install base_packages                   |
|3、Install pip_install                     |
|4、Install ipython_install                 |
|5、Install pyenv_install                   |
|6、Install pyenv_env                       |
|7、Install python2.7.6_install             |
|8、One-Click Setup                         |   
|9、[Q|q|quit] to quit                      |
+-------------------------------------------+
EOF
 
read  -p  "select which one packages you want to install: "  choice
 
case  $choice  in
     1)
       epel_install
       ;;
     2)
       base_packages
       ;;
     3)
       pip_install
       ;;
     4)
       ipython_install
       ;;
     5)  
       pyenv_install
       ;;
     6)
       pyenv_env
       ;;
     7)
       python2.7.6_install
       ;;
     8)
       epel_install
       base_packages
       pip_install
       ipython_install
       pyenv_install
       pyenv_env
       python_install
           source  /etc/profile
       ;;
     Q|q|quit)
       exit  $REVTAL
       ;;
     *)
       echo  "Usage: select one number(1|2|3|4|5|6|7|8|9)"
       exit  $REVTAL
       ;;
esac
done

关于脚本中使用还是source的问题

source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

来源: http://www.blogjava.net/jjshcc/archive/2012/12/12/392904.html

关于环境变量配置文件:

1.Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:
1.1 永久的:需要修改配置文件,变量永久生效。
1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。
2.设置变量的三种方法
2.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
2.2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。
2.3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是        有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
3.环境变量的查看
3.1 使用echo命令查看单个环境变量。例如:
echo $PATH
3.2 使用env查看所有环境变量。例如:
env
3.3 使用set查看所有本地定义的环境变量。
unset可以删除指定的环境变量。
4.常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL   当前用户Shell类型
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
MAIL   当前用户的邮件存放目录
PS1   基本提示符,对于root用户是#,对于普通用户是$

来源: http://285118.blog.51cto.com/275118/1174676

后记

bug:由于每次都是su切换到root账户的,所以/etc/profile中pyenv的环境变量不生效,需要重新source下才行,这也是一个小bug~

原因:.pyenv文件在root账户家目录下,而PATH中添加的是当前$HOME/.pyenv/bin,除了root家目录下有.pyenv之外,普通用户家目录下没有,所以就导致pyenv的环境变量不生效的问题~

解决办法:
su切换的时候使用 su - 即可

PS:

     实际生产环境中,多是在普通用户下创建.pyenv文件夹的,所以这个问题也不是问题了



本文转自lovelace521 51CTO博客,原文链接:http://blog.51cto.com/lovelace/1431666,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值