博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redhat Linux下的python版本号升级
阅读量:4879 次
发布时间:2019-06-11

本文共 6466 字,大约阅读时间需要 21 分钟。

运行#Python与#python -V,看到版本是2.4.3,非常老了,并且之前写的都是跑在python3.X上面的,3.X和2.X有非常多不同,

有兴趣的朋友能够參考下这篇文章: 

http://www.jb51.net/article/34011.htm


更新python千万不要把老版本号的删除!新老版本号是能够共存的,非常多主要的命令、

软件包都要依赖预装的老版本号python的,比方yum。 


一、升级到2.7.3

1. 升级安装

首先下载源tar包

可利用linux自带下载工具wget下载,例如以下所看到的:

# wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.gz


下载完毕后到下载文件夹下,解压

# tar -zxvf Python-2.7.3.tar.
gz


进入解压缩后的目录

cd Python-2.7.3


在编译前先在/usr/local建一个目录python2.7.3(作为python的安装路径,以免覆盖老的版本号)

# mkdir /usr/local/python2.7.3


在解压缩后的文件夹下编译安装

# ./configure --prefix=/usr/local/python2.7.3

# make

make install


此时没有覆盖老版本号,再将原来/usr/bin/python链接改为别的名字

# mv /usr/bin/python /usr/bin/python_old


再建立新版本号python的链接

# ln -s /usr/local/python2.7.3/bin/python2.7 /usr/bin/python


这个时候输入

# python


就会显示出python的新版本号信息

view sourceprint?

Python 2.7.3 (default, Sep 29 2013, 11:05:02)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>


2.执行程序时出现错误:

File "~/PythonInstall/lib/python2.7/multiprocessing/process.py", line 129, in start

    from .forking import Popen

  File "~/PythonInstall/lib/python2.7/multiprocessing/forking.py", line 58, in <module>

    from pickle import Pickler

  File "~/PythonInstall/lib/python2.7/pickle.py", line 1266, in <module>

    import binascii as _binascii

ImportError: No module named binascii

是由于升级python版本号不正常导致的。

 

回到源文件文件夹:

# cd .../Python-2.7.3

[Python-2.7.3]# make -s

building dbm using gdbm

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c: In function '_pysqlite_set_result':

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: 'sqlite3_int64' undeclared 


(first use in this function)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: (Each undeclared identifier is 


reported only once

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: for each function it appears 
in.)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: expected ')' before 


'PyInt_AsLong'

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c: In function '_pysqlite_build_py_params':

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:583: error: 'sqlite3_int64' undeclared 

(first use in this function)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:583: error: expected ';' before 'val_int'

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:596: error: 'val_int' undeclared (first use  
in this function)

/usr/bin/ld: /usr/local/lib/libz.a(adler32.o): relocation R_X86_64_32 against `a local symbol' can not be used when 


making a shared object; recompile with -fPIC

/usr/local/lib/libz.a: could not read symbols: Bad value

collect2: ld returned 1 exit status

/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when 


making a shared object; recompile with -fPIC

/usr/local/lib/libz.a: could not read symbols: Bad value

collect2: ld returned 1 exit status


Python build finished, but the necessary bits to build these modules were not found:

_tkinter           bsddb185           dl              

imageop            sunaudiodev                        

To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:

_sqlite3           binascii           zlib 


升级安装zlib

# wget http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz

# tar -zxvf zlib-1.2.8.tar.gz 

# cd zlib-1.2.8

# ./configure 

# make install


# cd ../Python-2.7.3

# make -s

building dbm using gdbm

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c: In function '_pysqlite_set_result':

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: 'sqlite3_int64' undeclared 


(first use in this function)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: (Each undeclared identifier is 
reported only once

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: for each function it appears 
in.)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:552: error: expected ')' before 


'PyInt_AsLong'

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c: In function '_pysqlite_build_py_params':

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:583: error: 'sqlite3_int64' undeclared 


(first use in this function)

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:583: error: expected ';' before 'val_int'

/opt/PJT_python/python-2.7.3/Python-2.7.3/Modules/_sqlite/connection.c:596: error: 'val_int' undeclared (first use 
in this function)


Python build finished, but the necessary bits to build these modules were not found:

_tkinter           bsddb185           dl              

imageop            sunaudiodev                        

To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:

_sqlite3 


升级安装sqlite3

# cd ..

# wget http://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz

# tar -zxvf sqlite-autoconf-3080500.tar.gz

# cd sqlite-autoconf-3080500

# ./configure

# make

# make install


# cd ..

# cd python-2.7.3

# make -s

building dbm using gdbm


Python build finished, but the necessary bits to build these modules were not found:

_tkinter           bsddb185           dl              

imageop            sunaudiodev                        

To find the necessary bits, look in setup.py in detect_modules() for the module's name.


# make clean

# make all

# make install


到此,程序就能正常执行了;


二、升级到3.3.0

更新python: 

第1步:更新gcc,

由于gcc版本号太老会导致新版本号python包编译不成功 代码例如以下:

  #yum -y install gcc 


系统会自己主动下载并安装或更新,等它自己结束 


第2步:下载Python-3.3.0软件包 

代码例如以下:

# wget --no-check-certificate http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2 


注意:依照上述命令下载的软件包会存放在你当前的工作文件夹下,

wget命令是一个从网络上自己主动下载文件的自由工具,详细使用方法,

请參考这篇文章:http://www.jb51.net/os/RedHat/73089.html 


说明:命令中的数字就是版本号号,你也能够把3.3.0换成你须要的版本号.


第3步:解压已下载的二进制包并编译安装 

代码例如以下:

#tar -jxvf Python-3.3.0.tar.bz2 

#cd Python-3.3.0 

#./configure 

#make all 

#make install 

#make clean 

#make distclean 

# /usr/local/bin/python3 –V 

编译安装完成以后,能够输入上面一行命令,查看版本号 


第4步:建立软连接指向到当前系统默认python命令的bin文件夹,让系统使用新版本号python 

#mv /usr/bin/python /usr/bin/python2.4 //当前python的版本号为2.4所以是python2.4 

#ln -s /usr/local/bin/python3.3 /usr/bin/python 

输入

#python -V,

就可以查看当前默认python版本号 

默认的python成功指向3.3.0以后,yum不能正常使用,须要改动yum的配置文件 


第5步:改动yum配置文件 

#vi /usr/bin/yum 

把文件头部的

#!/usr/bin/python  改成  #!/usr/bin/python2.4 //改为之前的老版本 

保存退出,yum就可以正常使用。


如若有其它命令、软件不能正常使用,仿照yum配置文件的改动方法,改动其配置文件就可以。 

至此,更新完成。

转载于:https://www.cnblogs.com/mengfanrong/p/4234746.html

你可能感兴趣的文章
HDU 5918 SequenceI (2016 CCPC长春站 KMP模版变形)
查看>>
bzoj1485: [HNOI2009]有趣的数列
查看>>
NPAPI插件开发详细记录:用VS2010开发NPAPI插件步骤
查看>>
linux下Makefile全解(二)
查看>>
XMLHTTP.readyState的五种状态
查看>>
百度外卖 前端面试题
查看>>
record for json formate site
查看>>
get 和 post 请求的区别(转)
查看>>
查询树形的根节点
查看>>
HDU 1272 小希的迷宫
查看>>
利用WPS 2012/2013 0day针对中国政府部门的定向攻击
查看>>
hdu 5412 CRB and Queries(整体二分)
查看>>
linux程序目录
查看>>
Socket ABAP (转)
查看>>
[C#]SharpDevelop---窗体设计器
查看>>
调试wcf服务端口号自动变化的解决办法
查看>>
VM 启动时报错:Failed to lock the file
查看>>
js中forEach与for循环小结
查看>>
160308_Signals & Slots
查看>>
Centos出现-bash: unzip: command not found的解决办法
查看>>