在一个centos6上安装多个不同版本python
为了应对不同开发环境共存的要求,经常需要在centos上安装多个版本的python。这里我对此做一个总结。
1.升级centos的系统缺省应用程序到最新版本
yum -y update
2.安装开发工具包
centos缺省不包含很多软件开发常用的工具包,所以需要安装。
yum groupinstall -y 'development tools'
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
注意,如果不在编译安装python之前就把这些工具包装好,python安装时就不会link这些软件模块。
3.其它安装python之前考虑的安装选项
UNICODE支持
python对unicode的支持已经有很多年了,python3.2之前的版本如果没有特别需求,应该在configure时用--enable-unicode=ucs4选项激活UTF-32; 对于python3.2,则是--with-wide-unicode
Shared library
现代linux的发行版配置的python都是编译成share library方式,有些第三方软件如mod_wsgi和Blender必须要这样才能正常运行。但是,如果把python编译成share library,就必须告知如何才能找到这个library。有两种办法达到这个目的:
通过在configure命令的最后加入LDFLAGS="-Wl,-rpath /usr/local/lib"选项把路径编译到可执行文件里面去
编辑文件/etc/ld.so.conf,把路径/usr/local/lib加入到文件的最后一行。然后运行命令/sbin/ldconfig让动态链接器更新设置。
#注意:有时候需要在python安装完之后再运行ldconfig命令,更新设置才生效。建议使用办法1,直接在可执行文件里面写死路径。
编译时使用“make altinstall"命令
这个命令非常重要,因为如果使用常规的"make install"命令,会导致编译生成的可执行程序文件中有一个文件名字是python,他会与系统自带的python版本程序混淆,并可能引发难以诊断的错误。
4.缺省程序安装路径
python缺省安装路径是/usr/local,可以在configure时候用
--prefix=
选项修改它到其它路径。但是如果这么做了,就需要修改PATH变量,把新的路径加入进去。
5.下载,编译和安装python
# Python 2.7.11:
wget
https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz
xz -d Python-2.7.11.tar.xz
tar xf Python-2.7.11.tar
cdPython-2.7.11
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall
# Python 3.5.1:
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz
xz -d Python-3.5.1.tar.xz
tar -xvf Python-3.5.1.tar
cdPython-3.5.1
./configure--prefix=/usr/local--enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
# Python 3.3.6:
wget https://www.python.org/ftp/python/3.3.6/Python-3.3.6.tar.xz
xz -d Python-3.3.6.tar.xz
tar -xvf Python-3.3.6.tar
cd Python-3.3.6
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall
6.下载和安装setuptools和pip工具
#下述命令来自setuptools官网https://pypi.python.org/pypi/setuptools/
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
python2.7 ez_setup.py --insecure
python3.3 ez_setup.py --insecure #在centos6.8上执行python3.5.1有问题(运行时会hang), python3.3.6则正常
上述命令在执行过程中会在目录/usr/local/bin生成两个文件:easy_install-xx和easy_install文件。这两条命令执行按照上述次序执行完成后,目录/usr/local/bin有三个文件示例如下。
[root@localhost ~]# ll /usr/local/bin/easy*
-rwxr-xr-x. 1 root root 332 Jun 22 00:15 /usr/local/bin/easy_install
-rwxr-xr-x. 1 root root 340 Jun 21 14:56 /usr/local/bin/easy_install-2.7
-rwxr-xr-x. 1 root root 340 Jun 22 00:15 /usr/local/bin/easy_install-3.3
[root@localhost ~]# file /usr/local/bin/easy_install-2.7
/usr/local/bin/easy_install-2.7: a /usr/local/bin/python2.7 script text executable
[root@localhost ~]# file /usr/local/bin/easy_install-3.3
/usr/local/bin/easy_install-3.3: a /usr/local/bin/python3.3 script text executable
[root@localhost ~]# file /usr/local/bin/easy_install
/usr/local/bin/easy_install: a /usr/local/bin/python3.3 script text executable
可以看出在安装了多个python版本的系统里,应该指定easy_install的版本来运行。
执行以下命令为不同版本python安装pip模块:
/usr/local/bin/easy_install-2.7 pip
/usr/local/bin/easy_install-3.3 pip
命令执行后,目录/usr/local/bin下会生成如下pip程序:
-rwxr-xr-x. 1 root root 290 Jun 22 07:07 pip
-rwxr-xr-x. 1 root root 292 Jun 22 06:59 pip2
-rwxr-xr-x. 1 root root 296 Jun 22 06:59 pip2.7
-rwxr-xr-x. 1 root root 292 Jun 22 07:07 pip3
-rwxr-xr-x. 1 root root 296 Jun 22 07:05 pip3.3
可以看出,对应不同版本python也有不同的pip程序,我们可以如下格式使用pip安装python package
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
7.为python2安装virtualenv沙盒 ---virtualenv是python2上运行的最常见沙盒模块
由于python3内含沙盒环境pyenv,所以不需要安装virtualenv
/usr/local/bin/pip2.7 install virtualenv
安装会在目录/usr/local/bin生成文件:virtualenv,示例如下:
[root@localhost ~]# ll /usr/local/bin/virtu*
-rwxr-xr-x. 1 root root 220 Jun 22 07:20 /usr/local/bin/virtualenv
[root@localhost ~]# file /usr/local/bin/virtualenv
/usr/local/bin/virtualenv: a /usr/local/bin/python2.7 script text executable
8.用virtualenv创建不同版本python的沙盒环境
前提是这些版本的python基础程序已经安装前述办法安装在系统中了
virtualenv --python=/usr/local/bin/python2.7 /sandbox/v27
virtualenv --python=/usr/bin/python2.6 /sandbox/v26
virtualenv --python=/usr/local/bin/python3.3 /sandbox/v33
virtualenv --python=/usr/local/bin/python3.5 /sandbox/v35
9.激活使用virtualenv的沙盒
source /home/lb/sanbox/v_26/bin/activate #激活沙盒v_26
(v35) [root@localhost lb]# python --version #执行需要的命令
deactivate #退出沙盒
10.使用pyvenv创建不同版本python的沙盒环境---pyvenv是python3的内置沙盒模块
pyvenv使用相对更加简单,系统安装的每个版本python3,都在目录/usr/local/bin有对应该版本的pyvenv-3.x程序。
这个程序只能创建对应其版本的沙盒环境,即pyvenv-3.1程序只能创建python3.1的沙盒环境,而pyvenv-3.3程序只能创建python3.3的沙盒环境。
使用示例如下:
[root@localhost sanbox]# pyvenv-3.5 t35 ###在当前目录下创建python3.5的沙盒t35
[root@localhost sanbox]# source ./t35/bin/activate ###激活沙盒t35
(t35) [root@localhost sanbox]# python --version ###验证沙盒t35的python版本
(t35) [root@localhost sanbox]# deactivate ###退出沙盒t35
由此可以看出pyvenv只能建立和管理python3的沙盒环境,virtualenv这可以同时建立和管理python2和python3的沙盒环境。
具体pyvenv使用方法看:https://github.com/yyuu/pyenv#command-reference
转载于:https://blog.51cto.com/leesbing/1827517
在一个centos6上安装多个不同版本python相关推荐
- 在Windows上安装两个不同版本的数据库
** 在Windows上安装两个不同版本的数据库 ** 我在学校期间,自己安装的8.0版本,老师有可能会让我们用一些版本比较低的数据库,比如说你装的8.0的,突然这个要用到5.7的,又不想删除原有的数 ...
- centos6.5 安装mysql8,centos6上安装mysql8.0版本
本博客是采用yum源的方式安装,非常的方便和快捷.(redhat 与centos7 等操作系统都可以采用此方法,步骤大体一致) mysql官网地址: https://dev.mysql.com 开 ...
- centos6上安装mysql8.0版本
本博客是采用yum源的方式安装,非常的方便和快捷.(redhat 与centos7 等操作系统都可以采用此方法,步骤大体一致) mysql官网地址: https://dev.mysql.com 开 ...
- 在Ubuntu 14.04 64bit上安装StarUML 2.5版本
StarUML是来自韩国的一个优秀的UML绘图软件, 原来是免费软件, 现在需要付费购买.当然免费使用功能会有诸多限制. 它支持Windows, Linux和Mac OS等平台. 下面是我在Ubunt ...
- android最新能调试吗,android – 不能在同一台设备上安装调试和发布版本
我已经使用applicationIdSuffix在我的项目中配置了构建版本,以便我可以在我的设备上安装调试版本和发行版本. 这里是我的build.gradle(相关部分): buildTypes { ...
- 电脑上安装了多个版本的nodejs,如何知道node命令调用的哪一个
在命令提示行里输入node -v命令,返回的版本号是老旧的8.11.3, 但我明明安装了最新版本的nodejs. 在控制台里找到该node进程的ID,22288,再到任务管理器里根据22288这个id ...
- linux python2.7 protobuf_在ubuntulinux上安装tensorflow,protobuf版本issu
在Ubuntu(GCloud VM)上安装tensorflow时,我得到的警告是-pip install tensorflow apachebeam0.6.0要求protobuf==3.2.0,但是p ...
- Windows7上安装TensorFlow的GPU版本后记
上一篇写了之前在我的Windows7上安装TensorFlow GPU版的一路坑坑洼洼,本以为已经解决了.但实际上在过年的几天内,又一次出现了问题.经过了反复的尝试,到今天为止终于稳定下来,特此记录一 ...
- 在一个IIS上同时运行两个版本ASP.NET报错的
在Windows 2003 server IIS 6.0上运行一个ASP.NET 2.0网站时出现报错: 服务器应用程序不可用 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 ...
- 在Windows2003server上安装msn9.0以上版本的解决办法
方法一: 最近windows 强制升级了msn 9的版本.导致我在windows2003下的msn又一次需要剥离出msi文件才能安装了.在网上逛了一圈发现了如下方法,这里分享下,同时,也感谢作者的详细 ...
最新文章
- R可视化散点图并绘制回归曲线
- Android项目中出现的Plugin with id ‘kotlin-android‘ not found解决方法
- 神马搜索如何提升搜索的时效性?
- 线段树POJ3468(成段更新,区间求和)
- 《剑指 Offer I》刷题笔记 1 ~10 题
- 如何把APP加到HTML,如何将 Microsoft 服务添加到你的应用 (HTML)
- matlab练习程序(图像错切)
- mysql怎么显示创表的语句_MySql轻松入门系列——第二站 使用visual studio 对mysql进行源码级调试...
- (转)根据两点经纬度计算距离
- php和python的选择排序算法,基于python的七种经典排序算法的详细介绍
- elementUI + vue实现 Excel筛选功能
- RS485以及MODBUS知识积累
- 物联网项目开发编程语言一览
- 反催收下沉社区,打通丰巢取件码
- C# 彻底删除文件或目录,不可恢复,文件清除工具
- 计算机主机机箱连接各部件,电脑的各部件组装都是用什么联接的
- Improving Entity Linking by Modeling Latent Relations between Mentions
- 手持式频谱分析仪 TFN的715c和760c怎么样
- 程序员的这 10 个坏习惯!你占了几个?
- 文章摘要智能提取【基于BERT技术】