我已经在我的本地机器上成功安装了Python 3.4和Python 3.6,但无法安装带有pip3的包。

当我执行pip3 install <package>时,我得到以下SSL相关错误:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting <package>
  Could not fetch URL https://pypi.python.org/simple/<package>/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement <package> (from versions: )
No matching distribution found for <package>

如何修复我的Python3。pip install <package>?


当前回答

这个问题可能是库丢失造成的。

在安装python 3.6之前,请确保安装了python所需的所有库。

$ sudo apt-get install build-essential checkinstall 
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

更多信息请参见如何在Ubuntu和LinuxMint上安装Python 3.6.0

其他回答

ssl模块是用于访问操作系统(OS)套接字(Lib/ssl.py)的TLS/ ssl包装器。因此,当ssl模块不可用时,可能是您没有安装OS OpenSSL库,或者在安装Python时没有找到这些库。让我们假设这是后面的情况(也就是说:你已经安装了OpenSSL,但在安装Python时没有正确链接它们)。

我还假定您是从源代码安装的。如果你是从二进制文件(例如:windows .exe文件),或包(Mac .dmg,或Ubuntu apt)安装,在安装过程中你可以做的不多。

在配置python安装的步骤中,您需要指定将使用OS OpenSSL进行链接的位置:

# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"

那么,在哪里可以找到已安装的OpenSSL目录呢?

# ubuntu 
locate ssl.h | grep '/openssl/ssl.h'

/home/user/.linuxbrew/Cellar/openssl/1.0.2r/include/openssl/ssl.h
/home/user/envs/py37/include/openssl/ssl.h
/home/user/miniconda3/envs/py38b3/include/openssl/ssl.h
/home/user/miniconda3/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.0.2s-h7b6447c_0/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1b-h7b6447c_1/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1c-h7b6447c_1/include/openssl/ssl.h
/usr/include/openssl/ssl.h

您的系统可能与我的不同,但正如您在这里看到的,我安装了许多不同的openssl库。在撰写本文时,python 3.8期望openssl 1.0.2或1.1:

Python要求使用X509_VERIFY_PARAM_set1_host()与OpenSSL 1.0.2或1.1兼容的libssl。

因此,您需要验证哪些已安装的库可以用于链接

/usr/bin/openssl version

OpenSSL 1.0.2g  1 Mar 2016
./configure --with-openssl="/usr"
make && make install

您可能需要尝试一些库,或者安装一个新的库,以找到适合您的Python和操作系统的库。

我在windows 10上遇到了同样的问题。我非常具体的问题是由于我安装了Anaconda。我安装了Anaconda,在path /to/Anaconda3/的路径下,出现了python.exe。因此,我根本没有安装python,因为Anaconda包含了python。当使用pip安装包时,我发现同样的错误报告,pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用。

解决方案如下:

1)可以在官网重新下载python;

2)进入“Python 3.7 (64-bit).lnk”所在目录

3)导入SSL并退出()

4)键入cmd, "Python 3.7 (64-bit).lnk" -m pip install tensorflow为例。

给,你都准备好了。

你可以做这两件事中的任何一件:

在安装Anaconda时,选择将Anaconda添加到路径的选项。

or

从Anaconda的安装文件夹中找到这些(完整的)路径,并将它们添加到环境变量中:

\蟒蛇

\ \图书馆\ mingw-w64 \ bin的水蟒

\ \图书馆\ usr \ bin的水蟒

\ bin \蟒蛇图书馆

\Anaconda\Scripts

\蟒蛇\图书馆

(anaconda \ condabin

将上述路径添加到“Path”系统变量中,它应该不再显示错误了:)

我尝试了很多方法来解决这个问题,但没有一个解决。我现在用的是Windows 10。

唯一有效的方法是:

卸载蟒蛇 卸载Python(我使用的是3.7.3版本) 再次安装Python(记得勾选自动添加到PATH的选项)

然后我用PIP下载了我需要的所有lib…和工作!

不知道为什么,或者这个问题是否与水蟒有关。

在macos上,使用下面的命令配置python 3.8.1将解决这个问题,我认为它也适用于Linux。

./configure --enable-optimizations --with-openssl=/usr/local/opt/openssl@1.1/

根据您的系统更改dir参数。