终于成功了! 从搭建centos7.6服务器到安装python3.7 ,折腾了我一个星期。看过无数的经验贴和博客,还看了很多Stack Overflow和Unix & Linux Stack Exchange上面的很多解决办法,特此总结出这篇博客,一方面以留后用,另一方面也是想给大家参考一下。
1.安装相关依赖
1.1
下载依赖的官方网站 https://pypi.org ,可以在这里面根据依赖包的名字搜索,下载需要的离线版本
yum install gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
需要安装很多,如果编译安装python的时候出错了,就根据错误信息提示安装对应的依赖
1.2
在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named ‘_ctypes‘的解决办法:3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可:
yum install libffi-devel -y
2.下载
python官网下载地址
https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
3.解压
tar -xf Python-3.7.0.tgz
4.安装编译
cd Python-3.7.0
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl
#第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便. #第二个可以提高python10%-20%代码运行速度. #第三个是为了安装pip需要用到ssl,后面报错会有提到.
make && make install //安装、编译
5.添加软链接
ln -sv /usr/local/python3/bin/pip3 /usr/bin/pip
ln -sv /usr/local/python3/bin/python3 /usr/bin/python
如果显示文件或目录已存在,则应先删除之前的软链接
rm -rf /usr/bin/pip
rm -rf /usr/bin/python
然后再重新执行上面的添加软链接命令。
6.查看安装的python版本
python -V
pip -V
7.解决安装python3.7之后,yum无法使用问题
升级python后会发现yum命令不能够使用了,因为yum命令使用并且依赖python2.6,所以我们要更改它的参数,保存并退出
vim /usr/bin/yum
将第一行
#!/usr/bin/python
改成
#!/usr/bin/python2.7
8.使用yum 出现File "/usr/libexec/urlgrabber-ext-down", line 28 解决方案
使用
vi /usr/libexec/urlgrabber-ext-down
将第一行
#!/usr/bin/python
改为
#!/usr/bin/python2
9.CentOS7中安装pip的方法
安装epel-release
yum -y install epel-release
安装python-pip
yum -y install python-pip
下面这几个步骤可以根据需要来决定是否采用
修改pip源
cd ~ #回到家目录
mkdir .pip #创建.pip目录
cd .pip
touch pip.conf #创建pip.conf配置文件
vi pip.conf
#在配置文件中增加如下内容
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com
#配置文件保存
升级pip
pip install --upgrade pip
检查pip版本
pip --version
10.python3安装完,出现 No module named '_ssl',解决方案
1. 命令 rpm -qa | grep openssl 查看你系统的 openssl 版本
其中 openssl-1.0.***x86_64 和openssl-devel***x86_64 这两个是必须的,如果没有,就去下载。
修改文件: Python-3.7.0/Modules/Setup.dist
放开下面5行
# Socket module helper for socket(2)
_socket socketmodule.c # 这行前面注释去掉
# 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 #前面注释去掉,并把路径改成/usr/local/ 这点很关键
_ssl _ssl.c \ #前面注释去掉
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ #前面注释去掉
-L$(SSL)/lib -lssl -lcrypto #前面注释去掉
开始重新安装 openssl
如果觉得有帮助,那就帮我点个赞吧,谢谢帅气/美丽的你