Centos7安装Python3.5

升级Python到3.0以上

*由于python3.0与之前的版本已经不再兼容,如果需要使用最新的Python则需要升级原来python版本,但是因为centos采用的yum管理安装,需要之前的版本支持,因此需要考虑升级的版本时候,保留之前的版本并存给yum使用 *

查看当前版本

python -V

centos7 默认安装的python环境为

Python 2.7.5

安装python3.5

安装步骤如下 :
1 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件)

yum groupinstall 'Development Tools'yum install zlib-devel bzip2-devel  openssl-devel ncurses-devel

2 下载 Python3.5代码包

wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz

3 编译安装

tar Jxvf  Python-3.5.0.tar.xzcd Python-3.5.0
./configure --prefix=/usr/local/python3
make && make install

4 替换python2.7.5 的软连接

rm  /usr/bin/python 
ln -sv  /usr/local/python3/bin/python3.5  /usr/bin/python

这样做的目的是在系统任意目录敲入python调用的是python3的命令,而非系统默认2.7.5的
但是这样同时这会导致依赖python2.7.5的yum不能使用,因此还要修改yum配置。

5 更新yum配置

ll /usr/bin | grep python

这时/usr/bin目录下面是包含以下几个文件的(ll |grep python),其中有个python2.7,只需要指定yum配置的python指向这里即可

vim /usr/bin/yum

通过vim修改yum的配置
#!/usr/bin/python改为#!/usr/bin/python2.7,保存退出。
完成了python3.5的安装。

用virtualenv管理python3运行环境

简介

virtualenv可以用来管理互不干扰的独立python虚拟环境,在有些场景下非常有用,例如:
你有两个python项目,一个是python2.7的,另一个是python3.5的,可以创建两个虚拟环境。
你有两个python项目,都依赖与一个module的不同版本,可以创建两个不同的虚拟环境,里面安装这个module的不同版本。
virtualenvwrapper在virtualenv的基础上提供了一些更方便的命令。

安装

(sudo) pip install virtualenv virtualenvwrapper

Linux/Mac OSX 下:

修改~/.bash_profile或其它环境变量相关文件(如 .bashrc 或用 ZSH 之后的 .zshrc),添加以下语句

export WORKON_HOME=$HOME/.virtualenvsexport PROJECT_HOME=$HOME/workspacesource /usr/local/python3/bin/virtualenvwrapper.sh

修改后使之立即生效(也可以重启终端使之生效):

source ~/.bash_profile

开发会用 virtualenv 来管理多个开发环境,virtualenvwrapper 使得virtualenv变得更好用

管理环境

首先我们创建一个python3.5的虚拟环境,当然系统里得先装好了python3.5。

mkvirtualenv -p python py3env


-p 后面的参数指定了python(也有可能要换成python3.2/python3.4/python3.5/等,具体要看你系统里面/use/bin/里面的文件是什么名字),如果去掉这个参数,就会使用系统默认的python。最后一个参数py3env是创建的这个环境的名字。

执行完了之后,会自动切换到这个新创建的虚拟环境。我们会发现命令行提示符会发生改变,例如在我的机器上:从 [root@centos6 bin]#  变成了(py3env) [root@centos6 bin]#,最前面多了这个虚拟环境的名字。

其他一些常用命令:

deactivate                
# 退出当前虚拟环境workon [虚拟环境名称]       
# 使用某个虚拟环境rmvirtualenv [虚拟环境名称] 
# 删除某个虚拟环境lsvirtualenv              
# 列出所有虚拟环境

包管理

在实际使用中,我们会用pip来管理python的包,而在虚拟环境里的包是和系统里的包分离开的,虚拟环境之间的包也是隔离开的。

在生产环境中,我们可能需要将程序部署在很多机器上,如果能方便地把依赖的包同步到所有机器上能省去很多时间。

可以在开发机器上执行下面这个命令,来列出所有的包并保存到packages.txt,其中-l参数是只列出当前虚拟环境的包:

pip freeze -l > packages.txt

然后在部署到生产环境的时候,把packages.txt也复制到每个机器,并在每个机器上执行:

pip install -r packages.txt