python - 如何在 CentOs 中修复 "ssl module in Python is not available"

标签 python centos

在 GoDaddy VPS CentOs 7 上安装新的 Python 3.7.1。 尝试 pip3 install virtualenv 或 python 3 -m pip install virtualenv 并获取:

pip 配置了需要 TLS/SSL 的位置,但是 Python 中的 ssl 模块不可用。

已安装 openssl-devel 并且是最新的

这个问题已被问及多次回答,但我找到的解决方案并没有解决我的问题。 谢谢大家!

我尝试了以下基于 CentOs 和 Linux 的解决方案:

"SSL module in Python is not available" when installing package with pip3 # 允许构建 python ssl 库 yum 安装 openssl-devel # 下载任何 python版本的源 cd/usr/源文件 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz tar xf Python-3.7.1.tar.xz CD Python-3.7.1

  # Configure the build w/ your installed libraries
  ./configure

  # Install into /usr/local/bin/python3.6, don't overwrite global python bin
  make altinstall

Trying to install packages with Python 3.7.2 pip causes TSL/SSL errors

"SSL module in Python is not available" when installing package with pip3

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

pip cannot confirm SSL certificate: SSL module is not available

"ssl module in Python is not available"pip cannot confirm SSL certificate: SSL module is not available

  `uncommented suggestions for CentOs
  make install failed:
    gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration   -I. -I./Include     -DUSE_SSL -I/include -I/include/openssl -c ./Modules/_ssl.c -o Modules/_ssl.o
    ./Modules/_ssl.c:74:6: error: #error "libssl is too old and does not support X509_VERIFY_PARAM_set1_host()"
    ./Modules/_ssl.c: In function ‘_ssl_configure_hostname’:
    ./Modules/_ssl.c:861: error: implicit declaration of function ‘SSL_get0_param’
    ./Modules/_ssl.c:861: warning: initialization makes pointer from integer without a cast
    ./Modules/_ssl.c:863: error: implicit declaration of function ‘X509_VERIFY_PARAM_set1_host’
    ./Modules/_ssl.c:869: error: implicit declaration of function ‘X509_VERIFY_PARAM_set1_ip’
    ./Modules/_ssl.c: In function ‘_ssl__SSLContext_impl’:
    ./Modules/_ssl.c:2988: error: ‘X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS’ undeclared (first use in this function)
    ./Modules/_ssl.c:2988: error: (Each undeclared identifier is reported only once
    ./Modules/_ssl.c:2988: error: for each function it appears in.)
    ./Modules/_ssl.c:3093: error: implicit declaration of function ‘SSL_CTX_get0_param’
    ./Modules/_ssl.c:3093: warning: assignment makes pointer from integer without a cast
    ./Modules/_ssl.c:3099: error: implicit declaration of function ‘X509_VERIFY_PARAM_set_hostflags’
    ./Modules/_ssl.c: In function ‘get_verify_flags’:
    ./Modules/_ssl.c:3397: warning: assignment makes pointer from integer without a cast
    ./Modules/_ssl.c: In function ‘set_verify_flags’:
    ./Modules/_ssl.c:3410: warning: assignment makes pointer from integer without a cast
    ./Modules/_ssl.c: In function ‘set_host_flags’:
    ./Modules/_ssl.c:3573: warning: assignment makes pointer from integer without a cast
    make: *** [Modules/_ssl.o] Error 1`

https://www.tomordonez.com/pip-install-ssl-module-python-is-not-available.html

最佳答案

这是一个适用于 Python 3.7.9 和 CentOS 7.8.2003 的有效解决方案:

su - root
yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel -y
cd /usr/src
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar xzf Python-3.7.9.tgz
cd Python-3.7.9

/usr/src/Python-3.7.9/Modules/Setup.dist 中,取消注释这 4 行:

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

最后:

./configure --enable-optimizations
make altinstall

关于python - 如何在 CentOs 中修复 "ssl module in Python is not available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56552390/

相关文章:

python - 在文件名中创建一个以空格分隔的选定字符列表

python - 外积并通过向量运算展平 - numpy

python - 是否有无限迭代器的表达式?

node.js - 无论有足够的可用空间,npm 都不会安装任何软件包

java - Tomcat7 CentOS 服务启动失败

javascript - 动态字典到JSON问题

python - 按索引列表从 numpy 数组中切片子数组

php - 与 mysql 和路径交叉检查

linux - CentOS:删除包含 txt 文件中字符串的行

linux - 作为用户的 Systemd 服务单元文件