为什么安装不了python3 get pip_centos在python3环境下安装PIP的问题?

昨天遇到这个问题,也是搜了一天未找到办法,最后还是看源码解决的。

源码编译安装Python3(.4.4),是自带且默认安装pip、setuptools的,如果装完python发现没有装这俩库,说明你的安装环境不全。

手机码字太累,先补个觉一会上电脑答。

2018年1月16日10:43更新

转眼过去快两年了,没想到能帮助这么多人,很开心,总结了一下安装方法

http://www.cnblogs.com/nidey/p/8295009.html

============2016-5-24 09:32:01Update===========

编译安装python是需要的zlib.h/openssl/h等文件可以简单安装:

yum install zlib-devel openssl-devel

这么装完再重新编译安装python3就可以了~~~

========2016-5-2 11:11:16Update=========

我回来了。。补充下答案。。。

环境:裸CentOS 7.2,自带python2.7.5

./configure

make

make altinstall

3、安完发现没有pip3,全局搜索

find / -name "pip*"只有

/usr/bin/pip

/usr/bin/pip2

/usr/bin/pip2.74、去官网看看

说明3.4已经自带了,那为什么我安完了没有?

官网也提供了pip安装脚本https://bootstrap.pypa.io/get-pip.py

wget 下来,用指定的版本安装试试

python3.4 get-pip.py与@老槐杨 一样的错误

zlib not available

Package http://zlib-1.xxx already installed明明已经安装了呀?怎么还是不行?

# python3.4

Python 3.4.4 (default, May 2 2016, 08:28:47)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux

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

>>> import zlib

Traceback (most recent call last):

File "", line 1, in

ImportError: No module named 'zlib'握草,没有zlib这个库?试了下python2.7,发现可以呀!

yum install zlib跟import zlib 的zlib好像不是一个东西哦!

百度谷歌搜了一圈也没找到答案,但是,你有源代码啊!为何不看看你敲的代码到底在做什么。于是我们重新编译Python3.4.4,看看到底发生了什么~

在make的结果里发现了点端倪

Python build finished successfully!

The necessary bits to build these optional modules were not found:

_bz2 _curses _curses_panel

_dbm _gdbm _lzma

_sqlite3 _ssl _tkinter

readline zlib

To find the necessary bits, look in setup.py in detect_modules() for the module's name.模块的二进制文件没找到,具体需要哪些文件,可以到setup.py里看一看。

好吧......

vim setup.py很容易找到这么一句

zlib_inc = find_file('zlib.h', [], inc_dirs)

if zlib_inc is not None:

......

else

missing.append('zlib')都是有源码的,顺藤摸瓜看!在inc_dirs路径里找zlib.h文件?inc_dirs是哪些路径,当然也可以往上跟踪查到(实在不行还可以print出来),然后,再一次~全局搜索

find / -name "zlib.h"根本木有这个文件!!!

else 分句把缺失zlib打印出来了,不是yum显示已经安装了zlib吗,输入

# zip

Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.

Zip 3.0 (July 5th 2008). Usage:

zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]确实已经安了,但是并没有zlib.h,编译安装python的zlib库却需要这个头文件,哪里有?

官网啊!!!

wget http://zlib.net/zlib-1.2.8.tar.gz还是老套路,下载、解压、配置、编译、安装

再一次~

# find / -name "zlib.h"

/usr/local/include/zlib.h有了哈哈哈

再make Python3.4,发现

Python build finished successfully!

The necessary bits to build these optional modules were not found:

_bz2 _curses _curses_panel

_dbm _gdbm _lzma

_sqlite3 _ssl _tkinter

readline

To find the necessary bits, look in setup.py in detect_modules() for the module's name.zlib装好了,还有那么多没装成的是什么鬼?

(此处失误,忘截图了,make altinstall完提示pip安装失败,需要ssl/tsl)

那把_ssl也装了吧~~咋装?看setup.py里有,需要openssl,结果

[root@pyDev Python-3.4.4]# openssl version

OpenSSL 1.0.1e xx xxx xxx也安了。。。。咋整?是不是似曾相识?

官网→OpenSSL

按zlib的套路再来一遍,再编译Python,

Collecting setuptools

Collecting pip

Installing collected packages: setuptools, pip

Successfully installed pip-7.1.2 setuptools-18.2pip和setuptools也自动装上了。。。还想试试get-pip.py?当然可以~~~~

[root@pyDev Downloads]# python3.4 get-pip.py

Collecting pip

Using cached pip-8.1.1-py2.py3-none-any.whl

Collecting wheel

Using cached wheel-0.29.0-py2.py3-none-any.whl

Installing collected packages: pip, wheel

Found existing installation: pip 7.1.2

Uninstalling pip-7.1.2:

Successfully uninstalled pip-7.1.2

Successfully installed pip-8.1.1 wheel-0.29.0

[root@pyDev Downloads]# pip3

Usage:

pip [options]

... ...然后再来一次=。=

find / -name "pip*"/usr/bin/pip

/usr/bin/pip2

/usr/bin/pip2.7

/usr/local/bin/pip

/usr/local/bin/pip3

/usr/local/bin/pip3.4好几个名哦!安装目录不一样哦!

enjoy it!

PS:openssl不怎么好装啊~,我这里有几点注意

1、配置参数

./config -fPIC --prefix=/usr/local --openssldir=/usr/local/ssl2、结果openssl库被装到了/usr/local/lib64里了,make python 时找不到,需要在setup.py的初始化搜索路径里填的东西(/usr/local/lib64 和/usr/local/include)

# lib_dirs and inc_dirs are used to search for files;

# if a file is found in one of those directories, it can

# be assumed that no additional -I,-L directives are needed.

if not cross_compiling:

lib_dirs = self.compiler.library_dirs + [

'/lib64', '/usr/lib64',

'/lib', '/usr/lib',

'/usr/local/lib64',

]

inc_dirs = self.compiler.include_dirs + ['/usr/include', '/usr/local/include']再make && make altinstall就可以了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值