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

477

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

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

4
如果是OS X操作系统:https://dev59.com/aVsW5IYBdhLWcg3wM0yF - ZiTAL
3
操作系统是Oracle Linux 7.x。 - Santosh Kumar G
2
你是否从软件包管理器中安装了pip?如果你是通过编译安装的,那么请先安装libssl-dev或者通过pip安装ssl pip install ssl https://dev59.com/3FgR5IYBdhLWcg3woebW - ZiTAL
74
由于“ssl”的原因,“pip”无法正常工作,你需要使用pip安装“ssl” :) - ramazan polat
3
有没有不需要重新编译或重新安装 Python 的解决方案? - matanster
显示剩余5条评论
44个回答

8
与上述解决方案类似,重新使用pyenv安装python版本。
不知怎么回事,我升级了openssl,导致pyenv版本的python无法运行。
pyenv install 3.6.8
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
...

第一行意思是它依赖于Homebrew的OpenSSL。

我也遇到了同样的问题,我的 Python 3.10 变成了 3.6。 - Sowjanya R Bhat

7

在我的情况下,我重新安装了Python。这解决了问题。

brew reinstall python

6
对于OpenSUSE来说,操作方式相同,但是需要对上述列出的几个软件包进行一些更改:
zypper install zlib-devel libopenssl-devel ncurses-devel sqlite3-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel

然后使用cd命令进入Python源代码目录。
make
make install

或者

make
make altinstall

And perhaps

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

应该执行此命令以供OpenSUSE用户使用。请参阅Python 3.7 install not working on openSUSE Leap 42.3

5
我在使用Visual Studio Code安装pylint时遇到了问题。通过打开Anaconda安装目录并运行以下命令,我成功解决了这个问题:
pip install pylint

然后,VS Code很高兴,但这并没有解决问题,因为运行仍然存在。
& C:/Users/happy/Anaconda3/python.exe -m pip install -U pylint

几乎给出了相同的错误,因此似乎VS Code无法访问python模块。

请注意,安装时,VS Code会选择第一个看到的python env,屏幕左下角显示正在使用哪个env。单击该区域可设置环境。因此,即使您为一个环境运行了pip install,VS Code也可能正在查看不同的环境。

最好的方法是确保VS Code选择了正确的python环境,并且该环境在系统路径中(在"系统属性-->高级-->环境变量"下)

在Path变量下,编辑并浏览到您要VSCode使用的特定Anaconda目录,并添加到PATH中,我需要添加以下内容:

C:\Users\happy\Anaconda3\
C:\Users\happy\Anaconda3\Scripts\
C:\Users\happy\Anaconda3\Library\bin\
C:\Users\happy\Anaconda3\Library\mingw-w64\bin\

你的Anaconda安装目录可能与其他人不同。

需要注意的一点是,Windows系统在重启终端前无法使PATH变量生效。如果你使用的是VS Code,请先关闭再重新打开它。如果你使用的是终端或PS Shell,则需要关闭并重新打开来检查Path是否已被包含。


5

问题可能来自于您安装的openssl软件包版本。我也遇到了同样的问题,但只需升级openssl即可解决。我使用Mac OS,并使用brew:

brew upgrade openssl

如果您使用brew安装了Python,则应该可以直接解决此问题,因为Python依赖于OpenSSL。

5

尝试通过Anaconda提示符安装


5

对我很有帮助。

pkg install openssl

使用此功能启用 SSL。


4
我也成功了(尝试通过Termux安装Django)。Android 8。谢谢。 - AndyCODE

5
最新版本的Python 3.8.4或更高版本应该可以直接支持https协议。如果您的电脑上还安装了旧版本的Python,则需要手动下载并安装Python3,或者使用Chocolatey:
如果没有安装Chocolatey,请先从这里安装:https://chocolatey.org/docs/installation 您只需复制并粘贴一条命令,并在命令提示符下以管理员权限执行即可。
choco install python3

如果您没有安装Python3,或者您已经安装了它 - 那么:
choco upgrade python3

请注意,您也可以使用Anaconda分发版,因为它内置了支持HTTPS的Python,但这些指令已经相当陈旧了,不需要再遵循它们。

使用命令行安装Anaconda:

choco install anaconda3

设置环境变量:

set PATH=C:\tools\Anaconda3\Scripts;C:\tools\Anaconda3;C:\tools\Anaconda3\Library\bin;%PATH%

然后运行失败的命令。在我的情况下,它是:

pip install conan

Anaconda 使用独立的 Python 安装,而 pip 也只能在 Anaconda 中使用。


4

前往Anaconda提示符并输入以下内容(如果您的引擎上安装了python 3.x):

py -m pip install pymysql 

我之前也遇到了同样的问题,而这个方法解决了我的问题。在执行完此操作后,你便可以在Power Shell或其他命令提示符下导入pymysql。


4
如果有人正在使用Arch Linux操作系统,我解决了TLS/SSL问题,方法如下:
sudo pacman -S openssl

然后我可以使用pip来安装我需要的包:

pip install openpyxl

1
2022 年更新:openssl 软件包已升级至 3.0 版本,而 python 程序似乎在寻找 1.x 模块。可以通过以下命令进行修复:sudo pacman -S openssl-1.1 - Steve Foerster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接