python3安装过程中出现的ssl问题 ,No module named _ssl

本文提供了一份详细的Python3.6.4安装步骤,包括依赖安装、源码下载、编译配置及环境变量设置等关键环节,并解决了SSL模块缺失的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装Python3.6.4


1 安装python3.6可能使用的依赖

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel

2 到python官网找到下载路径, 用wget下载

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

3 解压tgz包

tar -xf Python-3.6.5.tgz

4 进入python目录

cd /Python-3.6.5/

5 编译,安装

5.1 提示找不到SSL模块

python安装完毕后,提示找不到ssl模块:

[root@localhost ~]# python2.7.5
Python 2.7.5 (default, Jun 3 2013, 11:08:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python27/lib/python2.7/ssl.py", line 60, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: No module named _ssl
>>>

5.2 重新编译python(去掉最后4行的注释)

#修改Setup文件
vi /root/Python-3.6.5/Modules/Setup.dist
#修改结果如下:
# Socket module helper for socket(2)
_socket socketmodule.c timemodule.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
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

5.3 编译安装

./configure --prefix=/usr/local/python
make
make install

5.4 测试,已可正常使用。

[root@localhost ~]# python
Python 3.6.4 (default, Jun 3 2013, 14:56:13) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>

注:如需保留旧版本的就不需要执行 6 .7两部

6 重命名旧版本的python依赖

ll /usr/bin | grep python

mv /usr/bin/python /usr/bin/python2.7

7 删除旧的软链接,创建新的软链接到最新的python

rm -rf /usr/bin/python

ln -s /usr/local/bin/python3.6 /usr/bin/python

python -V

使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
问题出现原因:

yum包管理是使用python2.x写的,将python2.x升级到python3.1.3以后,由于python版本语法兼容性导致问题出现
解决办法:
修改yum配置文件,将python版本指向以前的旧版本

# vi /usr/bin/yum
#!/usr/bin/python2.7

修改urlgrabber-ext-down文件,更改python版本

# vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7

Could not fetch URL https://pypi.python.org/simple/six/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping

如需安装pip


下载相关文件

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

执行

/usr/local/python/bin/python3 get-pip.py

添加环境变量

vim ~/.bash_profile

添加下面这条参数

export PATH=/usr/local/python/bin:$PATH

保存
source ~/.bash_profile

测试

执行

[root@huo ~]# python3
Python 3.6.5 (default, Apr  1 2018, 20:41:34)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

执行脚本如下:

vim install_python.sh

#!/bin/bash
echo "正在安装相关组件"
yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc-c++ gcc openssl-devel

echo "下载安装包"
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

echo "正在解压安装包"
tar -xf Python-3.6.5.tgz -C /root/  && cd /root/Python-3.6.5/

echo "添加ssl支持"
cat >> /root/Python-3.6.5/Modules/Setup.dist <<"EOF"
_socket socketmodule.c

SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
EOF

echo "正在编译安装Python"
./configure --prefix=/usr/local/python && make && make install
cd /root

echo "删除安装包"
rm -rf /root/Python-3.6.5.tgz && rm -rf /root/Python-3.6.5

echo "正在添加环境变量"
echo "export PATH=/usr/local/python/bin:$PATH">> ~/.bash_profile
source ~/.bash_profile

echo "安装完成,请执行python3进行测试"
<think>首先,用户的问题是关于解决Python编译报错:"No module named &#39;_sqlite3&#39;"。这通常发生在编译Python时,系统缺少sqlite3开发库。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式,但这个问题不涉及数学表达式,所以可能不需要。 - 独立公式必须使用$$...$$格式并单独成段,同样,这里可能不需要。 - LaTeX语法正确:确保任何数学公式正确。 - 使用中文回答。 - 生成相关问题:在回答后添加相关问题部分。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考站内引用: - 引用[1]: 解释了错误原因:ubuntu系统默认Python2.7没有安装sqlite3,需要重新编译安装。 - 引用[2]: 解决方法是安装sqlite-devel,然后重新编译Python。 - 引用[3]: 类似地,安装libsqlite3-dev。 - 引用[4]: 提到了另一个相关错误,但这里不直接相关。 关键点: - 错误原因:Python在编译时缺少sqlite3开发库。 - 解决方案:安装sqlite开发包,然后重新编译Python。 步骤: 1. 安装sqlite开发库: - 对于Ubuntu/Debian:`sudo apt-get install libsqlite3-dev` - 对于CentOS/RHEL/Fedora:`sudo yum install sqlite-devel` 2. 重新编译Python: - 进入Python源码目录。 - 运行`./configure`(可能需要指定选项如`--prefix`)。 - 运行`make && make install`。 在回答中,需要结构化: - 解释错误原因。 - 提供解决步骤。 - 添加相关问题。 生成相关问题: - 基于主题,生成2-3个相关问题。 最终回答结构: 1. 引言:解释错误。 2. 原因分析。 3. 解决步骤。 4. 验证。 5. 相关问题部分。 引用标识:在参考的段落末尾添加[^1], [^2]等。但引用是给定的,我需要自然地引用它们。 在回答中: - 引用[1]解释了原因。 - 引用[2]和[3]提供了解决方法。 - 引用[4]不直接相关,但可以忽略或提及。 所以,在回答中: - 开头:重述错误。 - 原因:引用[1]。 - 解决:基于引用[2]和[3]。 添加引用标识:例如,在解释原因时说"根据引用[1],...",然后在段落末尾加[^1]。 但指令说:"回答中引用的段落末尾自然地添加引用标识",意思是如果引用了内容,就在该段落末尾加标识。 在回答中,我应该自然地融入引用。 相关问题生成: - 例如: 1. 如何避免在编译Python时遇到类似模块缺失错误? 2. Python编译安装的常见问题有哪些? 3. sqlite3Python中的作用是什么? 确保中文回答。</think>### 解决Python编译报错"No module named &#39;_sqlite3&#39;"的方法 当您编译Python时遇到错误`No module named &#39;_sqlite3&#39;`,这通常是因为Python在编译过程中缺少SQLite开发库的支持。SQLite是一个轻量级数据库引擎,Python的`sqlite3`模块依赖它。以下我将逐步解释原因并提供解决方法,确保您的Python编译成功。解决过程基于系统环境(如Ubuntu、CentOS等),请根据您的操作系统选择对应步骤。 #### 错误原因分析 该错误源于Python编译时未正确链接SQLite开发库。系统可能默认安装Python,但未包含SQLite的路径配置或开发文件。具体来说: - SQLite开发库(如头文件和链接库)未安装,导致Python无法在编译时构建`_sqlite3`模块。 - 常见于从源码编译Python时,尤其是在Ubuntu、CentOS等Linux发行版上,系统自带的Python可能未完整集成SQLite支持[^1]。 - 根据引用[1],Ubuntu系统默认的Python 2.7版本可能未安装SQLite相关依赖,需要手动重新编译Python以启用SQLite支持[^1]。 #### 解决步骤 以下是详细的解决步骤,分为安装SQLite开发库和重新编译Python两部分。**注意**:操作需要管理员权限,请在终端中运行命令。 1. **安装SQLite开发库** 根据您的操作系统,选择对应的安装命令: - **Ubuntu/Debian系统**: 运行以下命令安装开发包: ```bash sudo apt-get update # 更新软件包列表 sudo apt-get install libsqlite3-dev # 安装SQLite开发库 ``` 此步骤确保Python编译时有必要的头文件和链接库[^3]。 - **CentOS/RHEL/Fedora系统**: 运行以下命令: ```bash sudo yum install sqlite-devel # 安装SQLite开发包 ``` 如果使用`dnf`(Fedora新版本),可替换为`sudo dnf install sqlite-devel`[^2]。 安装完成后,验证库是否安装成功: ```bash sqlite3 --version # 应输出SQLite版本号,如3.37.2 ``` 2. **重新编译Python** 安装开发库后,必须重新编译Python源码以启用SQLite支持: - 进入Python源码目录(例如`Python-3.8.1`): ```bash cd Python-3.8.1 # 替换为您的Python源码目录 ``` - 运行配置脚本,确保包含SQLite支持: ```bash ./configure --enable-optimizations # 基本配置,添加--prefix=/usr/local/python3可指定安装路径 ``` 选项`--enable-optimizations`启用优化编译,提升性能。如果系统有其他依赖问题,可添加`--with-ssl`等选项[^2]。 - 编译并安装Python: ```bash make clean # 清理之前编译的缓存 make # 编译源码 sudo make install # 安装到系统 ``` 编译过程可能需要几分钟,请耐心等待。 3. **验证安装** 编译完成后,检查`sqlite3`模块是否可用: ```bash python3 -c "import sqlite3; print(sqlite3.sqlite_version)" # 应输出SQLite版本号 ``` 如果无错误输出,表明问题已解决。如果仍有错误,请检查步骤1的开发库安装是否成功,并确保在`./configure`步骤无报错。 #### 注意事项 - **环境问题**:如果您使用虚拟环境(如`venv`),请确保在全局Python中解决此问题后,再重建虚拟环境。 - **其他类似错误**:如果遇到类似错误如`No module named &#39;_ctypes&#39;`,可能需要安装`libffi-dev`(Ubuntu)或`libffi-devel`(CentOS),并重新编译Python[^4]。 - **预防措施**:未来编译Python时,建议先安装常见开发库(如`build-essential`、`zlib1g-dev`),以避免类似模块缺失问题。 通过以上步骤,您应该能成功解决编译报错。如果问题依旧,请提供操作系统详情和Python版本,以便进一步诊断。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值