首先,出现这个错误,先看清楚自己的python版本是多少,目前你根据这个错误信息百度到的很多资料都是说让你去注释python/Moudle下的setup.dist文件中的209行左右的内容,针对这个现象,python3.7.4的安装文件中已经将这部分注释掉了,至于3.6中有没有注释,可以自行验证下,不要盲目的一顿操作猛如虎,环境玩崩溃了,就得重装了。
安装Python3.7查阅资料得知需要的openssl版本最低为1.0.2,可是CentOS6默认安装的ssl版本是远低于1.0.2的,即使小编自己从官方下载的CentOS7的镜像,默认安装的ssl版本也才1.0.2,理论上CentOS7就没问题呀,可是小编在实际使用python3的时候,发现即使ssl版本是1.0.2,在引入import ssl的时候,还是会提示ModuleNotFoundError: No module named '_ssl'。于是整合网上的资源和解决方案,整理出这个python3.7.4的安装笔记。(如果你当前已经有下载并且安装了,但是出现了标题中的问题,那么你可以从本文的第二章节开始)
- 下载python的安装包
- 官方下载地址: https://www.python.org/ftp/python/
- 可以先下载后,然后上传到linux上解压安装;
- 也可以直接在linux上下载,指令:wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
- 创建目录, mkdir -p /usr/local/python3
- 解压python安装文件, tar -zxvf Python-3.7.4.tgz /usr/loca/python3
- 依赖环境准备(PS:安装环境中可能出现的错误,我都当做是依赖的环境,提前先准备好,否则每失败一次,都要回到这里step3重新执行configure命令重头来过,很浪费时间)
- 博客标题中的问题No module named '_ssl'的解决方法
# 1. 安装对应的依赖库 yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++ # 2. 下载openssl安装文件 wget http://www.openssl.org/source/openssl-1.1.1.tar.gz # 3. 解压openssl,并进入openssl的目录 tar -zxvf openssl-1.1.1.tar.gz cd openssl-1.1.1 # 4. 执行config脚本生成预编译文件 ./config --prefix=$HOME/openssl shared zlib # 5. 编译、安装 make && make install # 6. 设置环境变量LD_LIBRARY_PATH echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile source $HOME/.bash_profile
- 安装时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
- 安装依赖库 yum install libffi-devel
- pip3 install时报错“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.”
- 安装依赖库 yum install libffi-devel -y
- 博客标题中的问题No module named '_ssl'的解决方法
- 二进制文件安装
- 进入安装文件目录 cd /usr/local/python3/Python-3.7.4
- 运行configure脚本生成makefile文件(这条指令依赖Step2.1的openssl安装配置的环境变量) ./configure --prefix=/usr/local/python3 --with-openssl=$HOME/openssl
- ./configure --enable-optimizations --prefix=/usr/local/python3
- ./configure 后参数的意义参见参数说明
- 编译安装 make && make install
- 这一步需要留意安装过程中出现的错误,对应的错误需要对应的百度找到解决方案,否则就可能导致你在使用过程中会出现先莫名其妙的错误,或者去官方的论坛去溜达溜达说不定也会有一番收获。
- 清理临时文件 make clean
- 创建软连接
- ln -sf /usr/local/python3/bin/python3.7 /usr/bin/python3
- ln -sf /usr/local/python3/bin/pip3.7 /usr/bin/pip3
- 至此python3.7.4就已经安装完成了,你可以属于指令 python3 -V来测试下,是否能正确输出python的版本
- 验证标题中的问题解决结果,如下图所示:
题外话,总结:
由于CentOS求稳,所以默认安装的linux内核版本都较低,所以在实际应用中,总会出现各种各样的问题,而我们作为开发出于学习探索的目的,强烈建议使用ubuntu,两个字形容,真香!!!