升级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.xz
cd 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/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /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