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

我使用的是Python 3.6。当我试图安装“模块”;使用pip3,我面临这个问题:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available
581791 次浏览
对于未来试图解决这个问题的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

对于Debian用户,以下可能会用到:

 sudo apt install libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev libtk8.6 libgdm-dev libdb4o-cil-dev libpcap-dev

然后cd到Python 3. exe文件所在的文件夹。X库源代码,运行:

./configure
make
make install

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

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

然后cd到Python sources dir和

make
make install

make
make altinstall

也许

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

应该为OpenSUSE用户执行。看到在openSUSE Leap 42.3上无法安装Python 3.7

对于Windows 10, Windows 7 如果pip install在CMD提示符下不工作,使用Anaconda提示符运行它-它工作。< / p >

https://github.com/pypa/virtualenv/issues/1139

正如Tokci所说,它也适用于Windows 7。

用鼠标移动到Windows图标(左下),并开始输入“Anaconda”。应该会显示一些匹配的条目。选择“Anaconda Prompt”。一个名为“蟒蛇提示”的新命令窗口将打开。

然后pip开始工作。

以下也有助于导入xgboost: https://www.youtube.com/watch?v=05djBSOs1FA < / p >

For Windows 10 如果你想在正常的cmd中使用pip,而不仅仅是在Anaconda提示符中。您需要添加3个环境路径。 例如:

D:\Anaconda3
D:\Anaconda3\Scripts
D:\Anaconda3\Library\bin

大多数人只添加D:\Anaconda3\Scripts

如果有人使用Arch Linux操作系统,我通过运行这个解决了TLS/SSL问题:

sudo pacman -S openssl

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

pip install openpyxl

进入Anaconda提示符并输入(如果你有python3。X安装在你的引擎上):

py -m pip install pymysql

我也有同样的问题,这个解决了我的问题。之后,您可以在power shell或任何其他提示符中导入pymysql。

我遇到了这个问题!我不小心安装了32位版本的Miniconda3。确保你选择的是64位版本!

只要尝试通过Anaconda提示安装即可

这招对我很管用:

yum install python36-pyOpenSSL

Python版本和包管理器可能不同。

对于centos:

安装openssl:

sudo yum install openssl-devel

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

运行以下命令

sudo ./configure
sudo make
sudo make install

这将解决centos的问题…

目前在Windows 10上的Anaconda提示符(Anaconda3)也有同样的问题。下面是解决方案:https://github.com/ContinuumIO/anaconda-issues/issues/10576

为我工作。

sudo apt-get install libssl-dev

使用此命令为pip启用ssl。 如果有人遇到问题请告诉我。

在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建设重要的安装指令是多余的,因为ubuntu桌面已经有了这些,但对于一些Amazon的EC2实例来说是必要的。Python 3.8.0是目前的最新版本,但应该被最新的可用版本所取代。

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

我试着:

python -m pip install --upgrade pip

在那之后,它在Windows 10中工作得很好。

MAC OS

我在Mac OS(Mojave)上遇到了同样的问题,并解决了这个链接中提到的问题- Openssl问题

  1. 如果你没有Homebrew或不知道什么是Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. 或者如果你已经安装了Homebrew:
brew update && brew upgrade
brew uninstall --ignore-dependencies openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
< p >更新: 请记住,我必须使用--ignore-dependencies标志,因为安装的其他包依赖于OpenSSL

另外,如果问题是在使用pyenv后引起的,您可以使用以下方法修复它:

brew reinstall python
我在Visual Studio Code从VS 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安装,VS Code也可能会看到一个不同的环境。

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

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

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代码。如果使用终端或PS Shell,则关闭并重新打开并检查Path以确保它包括在内

这就是默认ssl设置的问题。你必须下载Python3并将路径添加到你的系统中。如果使用Pycharm,请将解释器设置为python3路径。然后可以正常使用pip3而不会出现错误。

修复此问题,无需更改任何与TSL/SSL相关的内容。

我试图看看同样的事情是否发生在pip上,并看到pip被破坏了。做了一些挖掘,意识到这可能是由Homebrew在2020年2月1日删除python@2引起的。

运行brew uninstall python@2删除Homebrew安装的python2。

销毁了使用python3创建的虚拟环境,并创建了一个新的。
pip3安装工作正常。

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

brew upgrade openssl

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

macOS, pyenv

如果你的python是pyenv安装的python,其中pyenv是在macOS上用自制程序安装的,那么可能有一个更新的版本可以修复这个问题:

$ brew update && brew upgrade pyenv

然后重新安装python版本:

$ pyenv install 3.7.2
pyenv: /Users/luckydonald/.pyenv/versions/3.7.2 already exists
continue with installation? (y/N)

注意,像这样覆盖现有的python安装有点脏,但在我的例子中,它确实有效。可能更干净的方法是删除它,然后正确地重新创建。

你可以去蟒蛇餐厅试试。

你会看到(base),现在升级pip。 例子:< / p >

(base) C:\Users\Tom>cd ..


(base) C:\Users>cd ..


(base) C:\>python -m pip install --upgrade pip
Requirement already up-to-date: pip in g:\anaconda3\lib\site-packages (20.0.2)


(base) C:\>pip -V
pip 20.0.2 from G:\Anaconda3\lib\site-packages\pip (python 3.7)


# Try install
(base) C:\>pip install selenium

这将花费较长的时间,但也将安装或升级Anaconda内部使用的SSL库。继续前进

最新的Python 3.8.4或更高版本应该能够支持https协议开箱即用。如果你的电脑上还有旧的python安装-下载&手动安装python3,或者使用Chocolatey:

如果你没有Chocolatey,安装它-从这里:https://chocolatey.org/docs/installation

您只需复制粘贴一个命令行行,并从命令提示符中使用提升的特权执行它。

choco install python3

如果你没有安装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特定的。

与上面解决方案类似,使用pyenv重新安装python版本。

不知何故,我升级了我的openssl,它破坏了pyenv版本的python。

pyenv install 3.6.8
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
...

第一行说它依赖于自制的openssl。

此问题是由于您的PC上缺少OpenSSL包。

如果pip install openpyxl也给出错误。

你可以通过以下站点安装OpenSSL(Win64 OpenSSL v1.1.1g)来解决这个问题:

slproweb.com/products/Win32OpenSSL.html

重新启动您正在使用的IDE,使更改生效。

我使用的是Windows 10,安装了Miniconda 3和Python 3.7。

我通过执行https://github.com/conda/conda/issues/8273来解决这个错误

具体来说,我将以下文件从C:\Users\MyUser\Miniconda3\Library\bin复制到C:\Users\MyUser\Miniconda3\DLLs:

  • libcrypto-1_1-x64.dll
  • libcrypto-1_1-x64.pdb
  • libssl-1_1-x64.dll
  • libssl-1_1-x64.pdb

在我的例子中,我重新安装了Python。这就解决了问题。

brew reinstall python

你可以尝试brew link,它会告诉你正确的指令:

$ brew link openssl --force
Warning: Refusing to link macOS provided/shadowed software: openssl@1.1
If you need to have openssl@1.1 first in your PATH run:
echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc


For compilers to find openssl@1.1 you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"


For pkg-config to find openssl@1.1 you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"

我用的是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副本。的 管理的系统和用户密钥链中的信任证书 Keychain Access应用程序和安全命令行实用程序不作为Python ssl模块的默认值使用

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

我在使用Ubuntu、pyenv和pyenv管理的Python 3.8.1时遇到了这个问题。实际上没有办法让pip正确工作,因为每次我试图安装任何东西,包括pip本身,都会出现相同的错误。 最终的解决方案是通过pyenv安装一个更新的版本,在本例中是3.8.6。显然,从3.8.4开始,Python已经准备好开箱运行SSL/TLS,所以一切都工作得很好

我有同样的问题,这是因为我改变了环境的文件夹。 我只是删除了env并重新安装了所有东西

我简单地用以下命令解决了这个问题:

Brew升级python@3.9

这个版本默认包含SSL !

在Windows 10 SQL Server 19中,解决方案是已知的。

复制以下文件:

  • libssl-1_1-x64.dll
  • libcrypto-1_1-x64.dll

从文件夹中

C:\Program Files\Microsoft SQL Server\MSSSQL15。MSSQLSERVER \ PYTHON_SERVICES \图书馆\ bin

到文件夹

C:\Program Files\Microsoft SQL Server\MSSSQL15。MSSQLSERVER \ PYTHON_SERVICES \ dll

然后打开一个新的DOS命令shell提示符。

https://learn.microsoft.com/en-us/sql/machine-learning/troubleshooting/known-issues-for-sql-server-machine-learning-services?view=sql-server-ver15#7-unable-to-install-python-packages-using-pip-after-installing-sql-server-2019-on-windows

在我的情况下,我在Linux上的$PATH遇到了问题。这也可能发生在MacOS上。

检查/usr/bin/pip3 install package_name_goes_here是否适合你。如果是,那么运行 which pip3这将告诉你pip3安装的第一个目录

如果它是类似/usr/local/bin/pip3的东西,不同于/usr/bin/pip3,那么你可能需要调整你的$PATH。

< p >运行

. echo $PATH并复制结果

PATH只是一个冒号分隔的包含目录的目录列表。Bash将始终返回您试图执行的程序的第一个实例。将所有系统目录移到前面。下面是一些系统目录的列表:

/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

如果失败,那么通过运行openssl version -a验证你已经安装了openssl,如果没有,然后安装openssl。

对于Windows 10下的Miniconda3, python=3.7.5,我尝试了以上所有建议;毫无效果。我不得不降级到python=3.7.0,这解决了这个问题

conda install python=3.7.0

显然这很混乱。答案表明升级到3.8.5也可以工作,但这在我的环境中有太多的副作用。

如果你已经通过scoop安装了水蟒,并且在conda环境中使用pip时遇到了这个错误,你可以通过…

  1. 将这些添加到路径中
C:\Users\YOUR_USERNAME\scoop\apps\anaconda3\current
C:\Users\YOUR_USERNAME\scoop\apps\anaconda3\current\Scripts
C:\Users\YOUR_USERNAME\scoop\apps\anaconda3\current\Library
C:\Users\YOUR_USERNAME\scoop\apps\anaconda3\current\Library\bin
  1. 通过scoop安装openssl
scoop install openssl
  1. 并将以下dll从..\anaconda3\Library\bin复制到..\anaconda3\DLLs

引用:

  • https://stackoverflow.com/a/54897379 < a href = " https://stackoverflow.com/a/54897379 " > < / >
  • https://stackoverflow.com/a/60405693 < a href = " https://stackoverflow.com/a/60405693 " > < / >

我得到了同样的错误:

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pb-tool/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pb-tool/
ERROR: Operation cancelled by user
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

在《Anaconda》中,我使用了以下命令:

conda install anaconda-navigator

本文中提到:pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用

为我工作。

pkg install openssl

使用此选项可以启用ssl。

先安装openssl。

如果你在conda环境中遇到这个问题,你可以安装openssl 使用conda install -c anaconda openssl。它为您启用ssl !< / p >

在尝试自己编译python后,仍然缺乏ssl模块,我最终尝试从apt安装缺少的模块,就像这样:

apt install python3-openssl