我使用的是Python 3.6。当我尝试使用pip3安装“模块”时,我遇到了这个问题:

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

当前回答

问题可能来自您安装的openssl包版本。这就是我的情况,我解决了这个问题,只是升级它。我在Mac OS上,使用brew:

brew upgrade openssl

如果你用brew安装了python,这应该会直接修复这个问题,因为python依赖于openssl

其他回答

在ubuntu上从源代码安装python 3.8时遇到了这个问题。下面总结了成功安装默认python 3.7所需的步骤:

sudo apt -y install libssl-dev zlib1g-dev build-essential

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar -xf Python-3.8.0.tgz
cd Python-3.8.0/

./configure --enable-optimizations
make
sudo make altinstall

zlib1g-dev和build-essential的安装说明是多余的,因为ubuntu桌面已经有了这些,但对于Amazon的一些EC2实例来说是必要的。Python 3.8.0是目前的最新版本,但应该被最新的可用版本所取代。

这些指令最适合将python 3.7作为python3的默认值,并在虚拟环境中运行python 3.8。

我用的是macOS,我用过brew,但Vaulstein在他的回答中提到的并没有涵盖我的情况。

我运行以下命令,以确保我当前的python没有通过brew安装

brew list | grep python           
python
python@2

brew info python
python@3.8: stable 3.8.3 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
Not installed
... 

所以我从https://www.python.org/下载了最新的3.8.5,安装时我看到了以下信息

证书验证和OpenSSL 此包包含自己的私有OpenSSL 1.1.1副本。的 管理的系统和用户密钥链中的信任证书 Python ssl模块不默认使用Keychain Access应用程序和安全命令行实用程序

在安装3.8.5之后,它修复了这个问题。

对于OpenSUSE,以同样的方式,但对上面列出的包做了一些更改:

zypper install zlib-devel libopenssl-devel ncurses-devel sqlite3-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel

然后cd到Python源代码dir和

make
make install

or

make
make altinstall

也许

ln -s /usr/local/lib64/python3.6/lib-dynload/ /usr/local/lib/python3.6/lib-dynload

应该为OpenSUSE用户执行。请参见Python 3.7安装无法在openSUSE Leap 42.3上工作

对于未来试图解决这个问题的Oracle Linux用户,下面是对我有用的方法。 首先安装缺少的库:

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

然后cd到Python3。X库并运行:

make
make install 

centos 7:

安装openssl:

sudo yum install openssl-devel

现在进入python目录,在那里我们提取了python tar文件,

运行以下命令

sudo ./configure
sudo make
sudo make install

这将解决centos的问题…