升级Python2.7导致使用pip等命令安装模块失败

1.urllib2.URLError: <urlopen error unknown url type: https>

python 出现'module' object has no attribute 'HTTPSHandler' 错误,是因为你编译python的时候没有把ssl模块编译进去,重新编译安装python,并把ssl模块包含进去就可以了

cd python源码目录/Modules
vi Setup.dst
找到

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

然后重新make即可

2.安装openssl错误

错误如下:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
md5 - x86_64 . s : Assembler messages :
md5 - x86_64 . s : 41 : Error : 0xd76aa478 out range of signed 32bit displacement
md5 - x86_64 . s : 50 : Error : 0xe8c7b756 out range of signed 32bit displacement
md5 - x86_64 . s : 68 : Error : 0xc1bdceee out range of signed 32bit displacement
md5 - x86_64 . s : 77 : Error : 0xf57c0faf out range of signed 32bit displacement
md5 - x86_64 . s : 95 : Error : 0xa8304613 out range of signed 32bit displacement
md5 - x86_64 . s : 104 : Error : 0xfd469501 out range of signed 32bit displacement
md5 - x86_64 . s : 122 : Error : 0x8b44f7af out range of signed 32bit displacement
md5 - x86_64 . s : 131 : Error : 0xffff5bb1 out range of signed 32bit displacement
md5 - x86_64 . s : 140 : Error : 0x895cd7be out range of signed 32bit displacement
md5 - x86_64 . s : 158 : Error : 0xfd987193 out range of signed 32bit displacement
md5 - x86_64 . s : 167 : Error : 0xa679438e out range of signed 32bit displacement
md5 - x86_64 . s : 187 : Error : 0xf61e2562 out range of signed 32bit displacement
md5 - x86_64 . s : 196 : Error : 0xc040b340 out range of signed 32bit displacement
md5 - x86_64 . s : 214 : Error : 0xe9b6c7aa out range of signed 32bit displacement
md5 - x86_64 . s : 223 : Error : 0xd62f105d out range of signed 32bit displacement
md5 - x86_64 . s : 241 : Error : 0xd8a1e681 out range of signed 32bit displacement
md5 - x86_64 . s : 250 : Error : 0xe7d3fbc8 out range of signed 32bit displacement
md5 - x86_64 . s : 268 : Error : 0xc33707d6 out range of signed 32bit displacement
md5 - x86_64 . s : 277 : Error : 0xf4d50d87 out range of signed 32bit displacement
md5 - x86_64 . s : 295 : Error : 0xa9e3e905 out range of signed 32bit displacement
md5 - x86_64 . s : 304 : Error : 0xfcefa3f8 out range of signed 32bit displacement
md5 - x86_64 . s : 322 : Error : 0x8d2a4c8a out range of signed 32bit displacement
md5 - x86_64 . s : 332 : Error : 0xfffa3942 out range of signed 32bit displacement
md5 - x86_64 . s : 340 : Error : 0x8771f681 out range of signed 32bit displacement
md5 - x86_64 . s : 356 : Error : 0xfde5380c out range of signed 32bit displacement
md5 - x86_64 . s : 364 : Error : 0xa4beea44 out range of signed 32bit displacement
md5 - x86_64 . s : 380 : Error : 0xf6bb4b60 out range of signed 32bit displacement
md5 - x86_64 . s : 388 : Error : 0xbebfbc70 out range of signed 32bit displacement
md5 - x86_64 . s : 404 : Error : 0xeaa127fa out range of signed 32bit displacement
md5 - x86_64 . s : 412 : Error : 0xd4ef3085 out range of signed 32bit displacement
md5 - x86_64 . s : 428 : Error : 0xd9d4d039 out range of signed 32bit displacement
md5 - x86_64 . s : 436 : Error : 0xe6db99e5 out range of signed 32bit displacement
md5 - x86_64 . s : 452 : Error : 0xc4ac5665 out range of signed 32bit displacement
md5 - x86_64 . s : 463 : Error : 0xf4292244 out range of signed 32bit displacement
md5 - x86_64 . s : 481 : Error : 0xab9423a7 out range of signed 32bit displacement
md5 - x86_64 . s : 490 : Error : 0xfc93a039 out range of signed 32bit displacement
md5 - x86_64 . s : 508 : Error : 0x8f0ccc92 out range of signed 32bit displacement
md5 - x86_64 . s : 517 : Error : 0xffeff47d out range of signed 32bit displacement
md5 - x86_64 . s : 526 : Error : 0x85845dd1 out range of signed 32bit displacement
md5 - x86_64 . s : 544 : Error : 0xfe2ce6e0 out range of signed 32bit displacement
md5 - x86_64 . s : 553 : Error : 0xa3014314 out range of signed 32bit displacement
md5 - x86_64 . s : 571 : Error : 0xf7537e82 out range of signed 32bit displacement
md5 - x86_64 . s : 580 : Error : 0xbd3af235 out range of signed 32bit displacement
md5 - x86_64 . s : 598 : Error : 0xeb86d391 out range of signed 32bit displacement
make [ 2 ] : * * * [ md5 - x86_64 . o ] Error 1
make [ 2 ] : Leaving directory ` / software / script / openssl - 0.9.8g / crypto / md5 '
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/software/script/openssl-0.9.8g/crypto'
make : * * * [ build_crypto ] Error 1

坑爹的也谈不上有什么解法,这里我编译的是openssl-0.9.8g,死活编不过,后到openssl资料库去翻了会,想也没想换了个版本openssl-0.9.8n,顺利编过

3.安装pip

报错如下:

1
2
3
4
5
# pip
Traceback ( most recent call last ) :
   File "/usr/bin/pip" , line 5 , in < module >
     from pkg_resources import load_entry_point
ImportError : No module named pkg_resources

其实发生这个问题是因为:虽然你已经把Python升级到了2.7版本,但是pip仍然是原来的,版本,仍然在原来python的site-package里面

CentOS5环境下,默认是python2.4,site-package在

1
/ usr / lib / python2 . 4 / site - packages /

很多模块都被安装在这里。直接打pip,还是使用的原来的pip。所以我们的思路就是:应该在新的Python中安装pip,这样才不会报错。

这个问题遇到的人很多,但是解决的太少了,网上都是抄来抄去,都解决不了问题。最后还是在一外个国人的网站上找到了解决方案:

1
2
# curl -O http://python-distribute.org/distribute_setup.py
# /usr/local/pyton2.7/bin/python distribute_setup.py

使用新版本的python来运行这个脚本,这个会自动安装出来一个easy_install,然后使用这个新的easy_install来安装pip就可以了!

1
2
3
# /usr/local/python/bin/easy_install pip
# /usr/local/python/bin/pip -V
pip 1.4.1 from / usr / local / python / lib / python2 . 7 / site - packages / pip - 1.4.1 - py2 . 7.egg ( python 2.7 )

安装生成的所有二进制文件,都是在你的PYTHON_HOME/bin/,因为我的是安装在/usr/local/python/,所以命令都在这里,以后再调用pip要使用绝对路径,或者做链接!

2.7的模块是在以下目录

1
/ usr / local / python / lib / python2 . 7 / site - packages /

 

转载于:https://my.oschina.net/dlpinghailinfeng/blog/203015

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值