Linux下使用python创建虚拟环境时遇到 No module named ‘_ssl‘处理方法

部署运行你感兴趣的模型镜像

目录

1.安装libssl-dev

2.修改python源文件编译

3.下载openssl 源码编译后再编译python

总结:


在linux下使用python3.7 并安装virtualenv,使用virtualenv创建虚拟环境的时候,报错

ModuleNotFoundError: No module named '_ssl'

解决方法如下,

1.安装libssl-dev

确认已经安装openssl,

sudo apt-get install libssl-dev

安装完以后重新编译python,如果可以正常使用则问题解决。如果安装的时候遇到了下面这个问题,

libssl-dev : Depends: libssl1.0.0 (= 1.0.2g-1ubuntu4) but 1.0.2g-1ubuntu4.15 is to be installed

可以参考这个博主的方法,不过评论区也说了可能会有风险,这里建议下载源码进行安装,具体可以参考本文的第3部分,下载openssl,在无管理员情况下使用源代码编译安装。

2.修改python源文件编译

如果还是不能解决,则需要修改python源文件了,具体的参考博文,即找到 python安装目录下的Modules文件夹下的Setup和Setup.dist文件

1493082-20190725152716256-828228405.png

将这两个文件上面加框的地方的注释去除掉,两个文件的处理方式是一样的,然后重新编译python即可。

3.下载openssl 源码编译后再编译python

在第2步的基础上,如果在编译的时候遇到下面这个问题

fatal error: openssl/rsa.h: No such file or directory

并且确认系统里已经有openssl了,但是却找不到openssl目录下的include文件夹及里面的文件,这个时候考虑下载openssl源代码自行编译(下载地址无需积分),这里建议使用非管理员权限安装的方法

解压openssl然后 进入目录下编译安装
./config --prefix=xxx
注意这里可能会提示你需要执行这个命令
make depend
如果有上面的提示就执行,否则直接执行下面的步骤
make -j && make install

 源码编译以后,按照常规方式配置 python 即 

./configure --prefix=python_dir

然后这个时候不要make,找到Makfile文件打开这个文件,修改SSL的内容为刚才安装的openssl位置

SSL=openssl_dir

然后再make -j && make install 即可

总结:

如果可以直接安装openssl 解决问题,那是最方便的了。如果不行的话,就得修改python源码,重新编译。再不行的话就就得下载openssl源码,编译,然后再修改python源码编译。

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

使用 `pyenv` 安装 Python 3.12.4 的过程中,如果出现 `ModuleNotFoundError: No module named '_ssl'` 错误,说明 Python 编译未能正确链接到 OpenSSL 库。此问题通常出现在系统自带的 OpenSSL 版本较低或编译配置不正确的情况下。 ### 原因分析 Python 3.12 需要至少 OpenSSL 1.1.1 或更高版本才能正常启用 `_ssl` 模块[^1]。而 CentOS 7.9 默认提供的 OpenSSL 版本通常是 1.1.1,但可能未被正确识别或使用,特别是在手动编译安装新版本 OpenSSL 后未进行环境变量或路径配置的情况下。 ### 解决方案 #### 1. 确认并安装新版 OpenSSL 下载并编译安装 OpenSSL 最新版(如 OpenSSL 3.0+): ```bash wget https://www.openssl.org/source/openssl-3.3.1.tar.gz tar -xzf openssl-3.3.1.tar.gz cd openssl-3.3.1 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make && make install ``` 设置环境变量以确保 Python 使用新安装的 OpenSSL: ```bash echo 'export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ``` #### 2. 使用 pyenv 编译安装 Python 3.12.4 并指定 OpenSSL 路径 设置编译参数以指向新安装的 OpenSSL: ```bash PYTHON_VERSION=3.12.4 CC=gcc CFLAGS="-O2" CPPFLAGS="-I/usr/local/openssl/include" LDFLAGS="-L/usr/local/openssl/lib" \ pyenv install --patch $PYTHON_VERSION <<<'' ``` 若 `pyenv install` 不支持该版本,可手动下载源码并编译安装: ```bash wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz tar -xzf Python-3.12.4.tgz cd Python-3.12.4 ``` 配置并编译 Python: ```bash CC=gcc CFLAGS="-O2" CPPFLAGS="-I/usr/local/openssl/include" LDFLAGS="-L/usr/local/openssl/lib" \ ./configure --prefix=/root/.pyenv/versions/$PYTHON_VERSION --with-openssl=/usr/local/openssl make && make install ``` #### 3. 设置默认 Python 版本并验证 ssl 模块 使用 `pyenv global` 设置全局 Python 版本: ```bash pyenv global 3.12.4 ``` 验证是否已成功加载 `_ssl` 模块: ```bash python -c "import ssl; print(ssl.OPENSSL_VERSION)" ``` 输出应为类似 `OpenSSL 3.3.1 ...`,表示已正确加载新版本 OpenSSL。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值