python 2.7.11,下载链接  https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz,如下载速度太慢可在豆瓣pypi搜索下载https://pypi.doubanio.com/simple/

python升级到2.7.11可解决 内置的 socket库的setdefaulttimeout方法和multiprocessing库的manage队列冲突的问题,在2.7.3版本是需要改源码才能解决。问题如下

Traceback (most recent call last):
File "/usr/local/lib/python2.7/multiprocessing/process.py", line , in _bootstrap
self.run()
File "/usr/local/lib/python2.7/multiprocessing/process.py", line , in run
self._target(*self._args, **self._kwargs)
File "agentInstaller.py", line , in getInstallInfo
lock.acquire()
File "/usr/local/lib/python2.7/multiprocessing/managers.py", line , in acquire
return self._callmethod('acquire', (blocking,))
File "/usr/local/lib/python2.7/multiprocessing/managers.py", line , in _callmethod
self._connect()
File "/usr/local/lib/python2.7/multiprocessing/managers.py", line , in _connect
conn = self._Client(self._token.address, authkey=self._authkey)
File "/usr/local/lib/python2.7/multiprocessing/connection.py", line , in Client
answer_challenge(c, authkey)
File "/usr/local/lib/python2.7/multiprocessing/connection.py", line , in answer_challenge
message = connection.recv_bytes() # reject large message
IOError: [Errno ] Resource temporarily unavailable

解决问题可以修改源代码文件 /usr/local/lib/python2.7/multiprocessing/connection.py

     def Pipe(duplex=True):
'''
Returns pair of connection objects at either end of a pipe
'''
if duplex:
s1, s2 = socket.socketpair()
++ s1.setblocking(True)
++ s2.setblocking(True)
c1 = _multiprocessing.Connection(os.dup(s1.fileno()))
c2 = _multiprocessing.Connection(os.dup(s2.fileno()))
s1.close()
s2.close()
else:
fd1, fd2 = os.pipe()
c1 = _multiprocessing.Connection(fd1, writable=False)
c2 = _multiprocessing.Connection(fd2, readable=False) return c1, c2 def __init__(self, address, family, backlog=):
self._socket = socket.socket(getattr(socket, family))
self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, )
++ self._socket.setblocking(True)
self._socket.bind(address)
self._socket.listen(backlog)
self._address = self._socket.getsockname()
self._family = family
self._last_accepted = None def accept(self):
s, self._last_accepted = self._socket.accept()
++ s.setblocking(True)
fd = duplicate(s.fileno())
conn = _multiprocessing.Connection(fd)
s.close()
return conn def SocketClient(address):
'''
Return a connection object connected to the socket given by `address`
'''
family = address_type(address)
s = socket.socket( getattr(socket, family) )
++ s.setblocking(True)
t = _init_timeout()

修改 /usr/local/lib/python2.7/test/test_multiprocessing.py

 assert sio.getvalue() == 'foo'

++ # Test interaction with socket timeouts - see Issue #
++ #
++
++ class TestTimeouts(unittest.TestCase):
++ @classmethod
++ def _test_timeout(cls, child, address):
++ time.sleep()
++ child.send()
++ child.close()
++ conn = multiprocessing.connection.Client(address)
++ conn.send()
++ conn.close()
++
++ def test_timeout(self):
++ old_timeout = socket.getdefaulttimeout()
++ try:
++ socket.setdefaulttimeout(0.1)
++ parent, child = multiprocessing.Pipe(duplex=True)
++ l = multiprocessing.connection.Listener(family='AF_INET')
++ p = multiprocessing.Process(target=self._test_timeout,
++ args=(child, l.address))
++ p.start()
++ child.close()
++ self.assertEqual(parent.recv(), )
++ parent.close()
++ conn = l.accept()
++ self.assertEqual(conn.recv(), )
++ conn.close()
++ l.close()
++ p.join()
++ finally:
++ socket.setdefaulttimeout(old_timeout)
++
++
++ testcases_other = [OtherTest, TestInvalidHandle, TestInitializers,
-- #- TestStdinBadfiledescriptor]
++ TestStdinBadfiledescriptor, TestTimeouts]

升级2.7.11的其他好处就去看官网描述吧。安装过程如下:

curl -k https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz -o python-2.7.11.tgz

yum -y install gcc gcc-c++ autoconf

yum -y install ncurses ncurses-devel

yum -y install mysql-devel

tar xf Python-2.7..tgz
cd Python-2.7./
./configure
make -j4 && make install

升级完重新打开secureCRT窗口

[root@master ~]# python
Python 2.7. (default, Nov , ::)
[GCC 4.4. (Red Hat 4.4.-)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

安装 pip,下载 get-pip.py

mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python /usr/bin/python
vim /usr/bin/yum 修改成 /usr/bin/python2.6.6
python get-pip.py
whereis pip
ln -s /usr/local/bin/pip2. /usr/bin/pip

安装readline

yum -y install readline-devel
yum -y install patch
yum -y install gcc python-devel zlib-devel openssl-devel libffi-devel pip install readline

若是使用 easy_install,则需要下载安装 setuptools 安装,下载链接 https://pypi.python.org/pypi/setuptools#downloads,安装过程缺少相关软件则同样下载安装包后上传至服务器安装,如果提示

MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
TypeError: __call__() takes exactly arguments ( given)

则需要注释掉该行代码,并补充如下代码

# MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker")

接着可能会遇到 “缺少 zlib 模块” 的情况,因为我们已经安装过 zlib-devel 模块和 zlib.x86_64 ,则只需要重新在 python 安装包中 make && make install 即可。

安装MySQLdb

pip install MySQL-python

或者源码安装

tar zxf MySQL-python-1.2..tar.gz
cd MySQL-python-1.2.
python setup.py build
python setup.py install

如果出现下面问题

>>> import MySQLdb
/usr/local/lib/python2./site-packages/MySQL_python-1.2.-py2.-linux-x86_64.egg/_mysql.py:: UserWarning: Module _mysql was already imported from /usr/local/lib/python2./site-packages/MySQL_python-1.2.-py2.-linux-x86_64.egg/_mysql.pyc, but /home/opd/tmpFiles/singleExec/MySQL-python-1.2. is being added to sys.path
Traceback (most recent call last):
File "<stdin>", line , in <module>
File "MySQLdb/__init__.py", line , in <module>
import _mysql
File "build/bdist.linux-x86_64/egg/_mysql.py", line , in <module>
File "build/bdist.linux-x86_64/egg/_mysql.py", line , in __bootstrap__
ImportError: libmysqlclient.so.: cannot open shared object file: No such file or directory
>>>

解决方法如下

# 根据最后提示,应该是找不着一个交libmysqlclient.so.18的文件,于是到mysql安装目录里找到这个文件并且做一个软连接到/usr/lib
ln -s /usr/local/mysql/lib/libmysqlclient.so. /usr/lib64/libmysqlclient.so.
# 如果是64系统则:
ln -s /usr/local/mysql/lib/libmysqlclient.so. /usr/lib64/libmysqlclient.so.

原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6030177.html

python版本升级的更多相关文章

  1. python版本升级及pip部署方法

    Python版本升级 CentOS 6.3自带的Python版本为2.6,首先需要升级到2.7版本.由于旧版本的Python已被深度依赖,所以不能卸载原有的Python,只能全新安装. 1.下载Pyt ...

  2. python 版本升级

    python 版本升级 升级python 查看python的版本 python -V Python 2.6.6 下载新版本 wget https://www.python.org/ftp/python ...

  3. Xshell 连接centOS虚拟机、centOS内置python版本升级

    Xshell 连接虚拟机 前置条件:VMware Workstation 12.5.1.Xshell 5 .  centOS 6.6 1.打开虚拟机,输入用户名和密码: 2.输出命令:ifconfig ...

  4. 【python】python版本升级,从2.6.6升级到2.7.13

    centos6.5系统自带了2.6.6版本的python,有时候为了项目上的需要,需要将python版本升级到2.7.13,下面介绍了如何进行升级. 说明:python从2.6升级到2.7会引发很多问 ...

  5. centos python版本升级到3.x

    Linux(CentOS)下将Python的版本升级为3.6.2的方法 1.检查确认系统的相关信息 查看内核版本[root@zstest1 ~]# cat /etc/redhat-release Ce ...

  6. python 版本升级(CentOS) 从2.6.6升级到2.7.6

    安装必须的包 yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readli ...

  7. linux python版本升级

    升级python版本的时候千万不能卸载python 2.6,再安装python2.7,这样会有无穷无尽的麻烦,保守的方式 是直接安装python2.7的源码包,也就是python两个版本共存.(因为C ...

  8. 【python】python版本升级2.6.6到2.7.3(CentOS release 6.2)

    一. 升级python到2.7.3 wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz tar -zxvf Python-2.7. ...

  9. linux的python版本升级

    可利用Linux自带下载工具wget下载,如下所示:     # wget http://www.python.org/ftp/python/2.7.3/Python-2.7.13.tgz 下载完成后 ...

随机推荐

  1. 【原创】轻量级即时通讯技术MobileIMSDK:Android客户端开发指南

    申明:MobileIMSDK 目前为个人维护的原创开源工程,现陆续整理了一些资料,希望对需要的人有用.如需与作者交流,见文章底签名处,互相学习. MobileIMSDK开源工程的代码托管地址请进入 G ...

  2. 在SQL Server里我们为什么需要意向锁(Intent Locks)?

    在1年前,我写了篇在SQL Server里为什么我们需要更新锁.今天我想继续这个讨论,谈下SQL Server里的意向锁,还有为什么需要它们. SQL Server里的锁层级 当我讨论SQL Serv ...

  3. MVC中路由

    篇目 介绍 路线的性质 了解缺省路由 用一个例子的路由 结论 介绍 本文介绍了MVC中的路由.如何执行的路线是由路由引擎和如何定义的URL路由. ASP.NET MVC的路由是一个模式匹配系统,负责传 ...

  4. 7.9 数据注解特性--ForeignKey

    外键特性,可以应用到类的属性中.Code-First默认的约定,对外键属性来说,假定外键属性的名称和主键属性是匹配的. 我们看一下,下面的代码: using System; using System. ...

  5. 【原创】kafka client源代码分析

    该包下只有一个文件:ClientUtils.scala.它是一个object,里面封装了各种client(包括producer,consumer或admin)可能会用到的方法: 1. fetchTop ...

  6. C#的Socket实现UDP协议通信

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...

  7. python查找指定目录下所有文件,以及改文件名的方法

    一: os.listdir(path) 把path目录下的所有文件保存在列表中: >>> import os>>> import re>>> pa ...

  8. 【英语学习】2016.09.11 Culture Insider: Teacher's Day in ancient China

      Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Te ...

  9. Ajax传递路径问题及解决

    在使用Ajax的过程中,如果要通过JSON传递路径值到处理页面,可能会出现传值不正确.(李昌辉) 解决方法就是在传值之前将路径进行编码: JS中: encodeURIComponent(url); 在 ...

  10. 十一个行为模式之观察者模式(Observer Pattern)

    定义: 定义对象之间一种一对多的关系,当被观察者状态变化时,可以自动地通知观察者并执行相关的业务操作.观察者模式又被称为发布-订阅模式等. 结构图: Subject:抽象主题类,定义了所有被观察类的通 ...