您的位置:首页 > 运维架构 > Linux

升级Linux下的Python遇到问题

2016-09-23 00:00 483 查看
摘要: 升级碰到一些问题,记录下。

升级linux下的python,版本如下:

[root@BJLTPGPLM1002T ~]# more /etc/system-release
Red Hat Enterprise Linux Server release 6.7 (Santiago)
[root@BJLTPGPLM1002T ~]# uname -a
Linux BJLTPGPLM1002T.lenovo.com 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@BJLTPGPLM1002T ~]#

升级方法如下:

下载Python源文件,进行编译安装,具体命令如下。

./configure --prefix=/usr/local/python2.7.11
make all
make install
make clean
make distclean

安装后运行python -V,发现版本已经是2.7.11。

在redhat和centos上都试过了(程序远程调用命令实现安装),一样的问题。

另外,安装后需要将新安装的python可执行文件连接到/usr/bin下:ln -s /usr/local/python2.7.11/bin/python2.7。

还有,安装后yum将不可用,需要将yum文件第一行的python路径执行老的python可执行文件。

vim /usr/bin/yum ,将第一行由#!/usr/bin/python改为#!/usr/bin/python2.6。

但是需要pip功能,所以下载pip的代码文件安装,过程中提示需要setuptools模块,于是下载setuptools模块。通过python setup.py install的方法安装。安装时报错:

[root@BJLTPGPLM1002T setuptools-27.2.0]# python setup.py install
Traceback (most recent call last):
File "setup.py", line 11, in <module>
import setuptools
File "/tmp/setuptools-27.2.0/setuptools/__init__.py", line 14, in <module>
from setuptools.dist import Distribution, Feature
File "/tmp/setuptools-27.2.0/setuptools/dist.py", line 20, in <module>
from setuptools import windows_support
File "/tmp/setuptools-27.2.0/setuptools/windows_support.py", line 2, in <module>
import ctypes
File "/usr/local/python2.7.11/lib/python2.7/ctypes/__init__.py", line 10, in <module>
from _ctypes import Union, Structure, Array
ImportError: No module named _ctypes
[root@BJLTPGPLM1002T setuptools-27.2.0]#

其实是缺少ctypes。ctypes是C语言实现的一个模块。本来应该是有的:

Python 2.7.11 (default, Sep 23 2016, 12:13:31)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import _ctypes
>>> _ctypes.__file__
'/usr/local/python2.7.11/lib/python2.7/lib-dynload/_ctypes.so'
>>>

目前是问题是为什么缺少了/usr/local/python2.7.11/lib/python2.7/lib-dynload/_ctypes.so?OS自带的2.6的Python包含_ctypes.so文件,但是2.7编译安装后没有找到这个文件。而主要的问题是,在10.99.201.34上安装2.7.12后没有找到_ctypes.so,但是这台机器之前安装的2.7.11中包含这个问题。所以问题是为什么

2016-09-29 补充:

原因已找到。

python的安装文件在我的windows笔记本上做了解压,重新用7-zip这个软件打包为zip格式放到服务器(Windows)上,程序会下载这个文件然后做解压安装操作,这样安装导致了缺少_ctypes.so文件。在windows下解压重新压缩的过程中出现问题。

更换一种方法,将从Python官网上下载的文件解压开,得到一个tar文件,将此文件放到服务器端,然后在客户端程序中下载这个tar文件,然后在做解压安装过程,最后安装Python后包含了_ctypes.so文件。

但是目前还没有研究具体的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python ctypes