yum -y update
yum groupinstall 'Development Tools'
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
Pyhon2.7
wget http://python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar xf Python-2.7.13.tar.xz
cd Python-2.7.13
./configure --prefix=/usr/local/python27 --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstal
Python3.6
wget http://mirrors.sohu.com/python/3.6.0/Python-3.6.0.tar.xz(国内sohu源)
wget http://python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xf Python-3.6.0.tar.xz
cd Python-3.6.0
./configure --prefix=/usr/local/python3 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
删除动态库中的符号以节省内存空间
strip /usr/local/lib/libpython2.7.so.1.0
strip /usr/local/lib/libpython3.6m.so.1.0
安装pip,包管理
# First get the script:
wget https://bootstrap.pypa.io/get-pip.py
# Then execute it using Python 2.7 and/or Python 3.6:
python2.7 get-pip.py
python3.6 get-pip.py
# With pip installed you can now do things like this:
pip2.7 install [packagename]
pip2.7 install --upgrade [packagename]
pip2.7 uninstall [packagename]
利用virtualenv来解决多版本python共存的问题。virtualenv是python的一个包,在2.7下面需要用pip安装,在3.3以上已经内置在python里面了,不用在单独安装。我理解它的使用是这样的:
* 如果你想建立2.7版本下的隔离环境,你就需要用2.7版本下的vritualenv包的命令,如果你想建立3.6版本下的隔离环境就需要用3.6下的virtualenv包的命令。不同版本的virtualenv命令是不一样的。
* 排除版本不同的命令,virtual使用的大概框架是类似的
+ 首先创建一个虚拟环境,这个虚拟环境其实就是一个目录,这个目录里面是这个虚拟环境的配置文件,配置文件包括启动与结束这个虚拟环境的脚本以及库文件。你看这些目录其实就是那些那么版本文件的软链接嘛,比如2.7的虚拟环境,bin目录下基本上是2.7所有的那些二进制文件都链接过来。
+ 利用目录里面的启动脚本来启动虚拟环境,启动后在提示符前面会有一个这个虚拟环境的标识符。只要有这个标识符就说明在这个虚拟环境中了,你就可以自由的用python,pip这些命令再也不用担心出错了。
+ 利用目录里的结束脚本来结束虚拟环境。
其实看完这个目录树你就知道其实这是利用bash环境脚本等工具做出的一个子进程环境,其实自己做也行了。但是人家已经写好了就不要重新发明轮子,自己写还容易出错呢。
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7 install virtualenv
virtualenv my27project
# Use the built-in functionality in Python 3.6 to create a sandbox called my36project:
python3.6 -m venv my36project
# Check the system Python interpreter version:
python --version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
source my27project/bin/activate
python --version
# This will show Python 2.7.13
deactivate
# Activate the my36project sandbox and check the version of the default Python interpreter in it:
source my36project/bin/activate
python --version
# This will show Python 3.6.0
deactivate