Python3.7 ssl模块导入失败的解决办法

网上有很多关于解决Python3.7导入_ssl模块失败的文章,但实际操作多数不成功,下面的方法亲测可用。

一、安装依赖

Python3.7编译安装ssl模块需要安装openssl或libressl(二选一),系统自带或通过命令安装的openssl是1.0.1版本,不满足python3.7的需求。对ssl库的版本要求如下:

  • openssl >= 1.0.2
  • libressl >= 2.6.4

本人所用环境:

下载安装Libressl

  • 官网:https://www.libressl.org/ , 下载连接:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.9.1.tar.gz
  • ./config –prefix=/usr/local/ssl 
  • make 
  • sudo make intall
  • mv /usr/bin/openssl /usr/bin/openssl.bak    (如果之前未安装ssl,此步骤可跳过)
  • mv /usr/include/openssl /usr/include/openssl.bak   (如果之前未安装ssl,此步骤可跳过)
  • ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 
  • ln -s /usr/local/ssl/include/openssl /usr/include/openssl
  • 在/etc/ld.so.conf.d 目录创建libressl-2.9.1.conf文件,添加/usr/local/ssl/lib
  • sudo ldconfig

二、安装Python3.7

  • 配置环境变量

    export LDFLAGS=" -L/usr/local/ssl/lib"
    export CPPFLAGS=" -I/usr/local/ssl/include"
    export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"

  • 解压python安装包,执行configure文件: 

    ./configure --enable-shared

    查看ssl配置是否正常

    

  • make
  • sudo make install
  • 验证ssl模块是否安装成功
  • /usr/local/bin/python3.7

    

三、其他错误

  • 编译ssl模块失败

       解决办法:

        进入libressl编译目录libressl-2.9.1

        sudo cp ssl/.libs/libssl.so.47.0.5 /lib/x86_64-linux-gnu/
        sudo cp crypto/.libs/libcrypto.so.45.0.4 /lib/x86_64-linux-gnu/

        sudo ln -s /lib/x86_64-linux-gnu/libssl.so.47.0.5 /lib/x86_64-linux-gnu/libssl.so.47
        sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.45.0.4  /lib/x86_64-linux-gnu/libcrypto.so.45

        重新编译

  • 编译_ctypes模块失败

     解决方法: sudo apt-get install libffi-dev , 然后重新编译

 

<think>我们是在ARM架构的Ubuntu/Debian系统上安装Python 3.7python3.7-venv 由于ARM架构的特殊性,可能无法直接通过apt安装,需要添加PPA或者从源码编译 但注意:ARM平台上可能没有现成的PPA,所以可能需要从源码编译安装 步骤: 1. 安装编译依赖 2. 下载Python 3.7源码 3. 编译并安装Python 3.7 4. 验证安装 5. 安装虚拟环境模块python3.7-venv) 但是,在Ubuntu/Debian上,如果系统仓库中没有Python3.7,我们可以尝试使用deadsnakes PPA(但注意deadsnakes PPA不支持ARM架构),因此对于ARM平台,源码编译是更可靠的方法。 因此,我们采用源码编译的方式。 具体步骤:</think>### 在 ARM 架构 Ubuntu/Debian 上安装 Python 3.7 和虚拟环境 #### 步骤 1:安装编译依赖 ```bash sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev \ libgdbm-dev libnss3-dev libssl-dev libreadline-dev \ libffi-dev libsqlite3-dev libbz2-dev liblzma-dev ``` > 这些库是编译 Python 的基础依赖[^1] #### 步骤 2:下载 Python 3.7 源码 ```bash wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz tar -xvf Python-3.7.17.tgz cd Python-3.7.17 ``` #### 步骤 3:配置 ARM 架构优化编译 ```bash ./configure \ --prefix=/usr/local/python3.7 \ --enable-optimizations \ --enable-shared \ --with-system-ffi \ CFLAGS="-fPIC" ``` > `--enable-shared` 生成共享库(解决后续导入问题)[^3] > `-fPIC` 确保 ARM 架构兼容性 #### 步骤 4:编译并安装 ```bash make -j$(nproc) # 使用所有 CPU 核心加速编译 sudo make altinstall # 保留系统默认 Python ``` #### 步骤 5:安装虚拟环境支持 ```bash sudo /usr/local/python3.7/bin/python3.7 -m ensurepip sudo /usr/local/python3.7/bin/python3.7 -m pip install --upgrade pip sudo /usr/local/python3.7/bin/python3.7 -m pip install virtualenv ``` #### 步骤 6:配置环境变量 ```bash echo &#39;export PATH="/usr/local/python3.7/bin:$PATH"&#39; >> ~/.bashrc echo &#39;export LD_LIBRARY_PATH="/usr/local/python3.7/lib:$LD_LIBRARY_PATH"&#39; >> ~/.bashrc source ~/.bashrc ``` > `LD_LIBRARY_PATH` 解决导入共享库问题[^3] #### 步骤 7:创建虚拟环境 ```bash python3.7 -m venv myenv # 创建虚拟环境 source myenv/bin/activate # 激活环境 python -m pip install --upgrade pip # 更新虚拟环境中的pip ``` #### 验证安装 ```bash python --version # 应输出: Python 3.7.17 python -c "import sqlite3, ssl; print(&#39;Success&#39;)" ``` #### 常见问题解决 1. **导入错误: libpython3.7m.so.1.0 找不到** ```bash sudo ldconfig /usr/local/python3.7/lib ``` 2. **pip 安装失败** ```bash curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo /usr/local/python3.7/bin/python3.7 get-pip.py ``` 3. **虚拟环境激活失败** ```bash sudo apt install python3.7-venv # 尝试安装系统包(如果可用) ``` #### 架构优化说明 ARM 架构编译需注意: 1. 使用 `-fPIC` 编译选项确保位置无关代码 2. `--enable-shared` 必须启用以避免动态链接错误 3. 树莓派等设备建议添加 `--with-system-ffi` 提高兼容性 > 编译时间参考:树莓派 4B 约 25 分钟,云服务器约 8 分钟 --- ### Python 3.7 与虚拟环境管理 | 命令 | 功能 | 示例 | |------|------|------| | `python3.7 -m venv` | 创建虚拟环境 | `python3.7 -m venv django-env` | | `source env/bin/activate` | 激活环境 | `source django-env/bin/activate` | | `deactivate` | 退出环境 | `deactivate` | | `pip freeze > requirements.txt` | 导出依赖 | `pip freeze > requirements.txt` | | `pip install -r requirements.txt` | 安装依赖 | `pip install -r requirements.txt` | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值