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

San*_*r G 73 python pip pexpect

我正在使用Python3.6,当我尝试使用pip3安装"模块"时,我面临下面提到的问题"pip配置了需要TLS/SSL的位置,但是Python中的ssl模块不可用"

请帮我解决这个问题

Vau*_*ein 244

苹果系统

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

  1. 如果您没有 Homebrew 或不知道 Homebrew 是什么:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )"

  2. 或者,如果您已经安装了 Homebrew:

brew update && brew upgrade
brew uninstall --ignore-dependencies openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
Run Code Online (Sandbox Code Playgroud)

更新:请记住,我必须使用--ignore-dependencies标志,因为安装的其他软件包依赖于 OpenSSL。

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

brew reinstall python
Run Code Online (Sandbox Code Playgroud)

  • 为什么 https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb 也添加为依赖项?:) 我认为它应该被删除,因为它完全不相关并且可能不安全 (25认同)
  • 从“Mojave”升级到“Catalina”后,我遇到了这个。我只需要 `brew update && brew Upgrade` 即可再次工作。感谢您的建议! (13认同)
  • 安装另一个“Python”版本后,pip 被破坏了。这个解决方案帮助我修复。 (5认同)
  • `brew update && brew Upgrade` 确实有效;但如果你像我一样,不要忘记 `source ~/.bashshrc` 或 `source ~/.zshrc` (3认同)
  • 没有批评你的答案(更多的是一般情况),但需要使用“brew升级”(这将全局升级我的所有依赖项,这反过来又可能使其他东西破坏)确实搞砸了解决我遇到的问题对于一个特定的项目。 (2认同)

无名小*_*名小路 96

对于Windows 10,如果要在普通cmd中使用pip,不仅要在Anaconda提示符下使用pip。您需要添加3条环境路径。如下所示:

D:\Anaconda3; 
D:\Anaconda3\Scripts; 
D:\Anaconda3\Library\bin 
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案需要更多投票 (10认同)
  • 谢谢,我添加了 D:\Anaconda3\Library\bin 并且它可以工作,顺便说一下 libssl-1_1-x64.dll 位于该文件夹中。(win10x64、Python 3.7) (5认同)
  • 如果不使用 Anaconda,这将不起作用。我在安装 OSGeo4W64 和 QGIS 3.10.2 时遇到过这个问题。将我收集到的正确路径添加到 PATH 变量并不能解决问题(例如:`C:\Program Files\QGIS 3.10\apps\Python37\Scripts`)。 (3认同)
  • 环境路径是什么意思?你的意思是PATH环境变量吗?另外,我的 D 盘中没有这些文件夹,它们是否应该在我安装 Anaconda 时创建? (2认同)

dat*_*ung 30

我正在使用 Windows 10 并安装了带有 Python 3.7 的 Miniconda 3。

我按照这个https://github.com/conda/conda/issues/8273解决了这个错误

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

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

  • 这有效;谢谢...两台机器上的 Windows 10 (Anaconda)。 (5认同)
  • 惊人的!!!它对我有用!非常感谢你,兄弟;) (5认同)
  • 这对我也有用。我安装了 Anaconda,而不是 Miniconda,但我没有使用它,所以我想。我在 vscode 中使用 .venv 从头开始​​设置了一个新项目,并且在执行此操作之前无法安装软件包。 (4认同)
  • 谢谢,它在 SQL Server 环境和 Windows 11 上对我有用。使用相同的登录名将文件从 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\Library\bin 复制到 C:\Program Files\Microsoft SQL Server \MSSQL15.MSSQLSERVER\PYTHON_SERVICES\DLL (4认同)
  • 只是为了补充这一点。如果您使用 conda env,则路径为 C:\Users\MyUser\Miniconda3\envs\<NAME_OF_YOUR_ENV>\Library\bin 到 C:\Users\MyUser\Miniconda3\envs\<NAME_OF_YOUR_ENV>\DLLs (3认同)
  • 这对我有用,与@Abelini 相同,但在 Win10 上除外。SQL Server 机器学习工具 (sp_execute_external_script) 不提供除 pip 之外的任何其他方法来安装包。听起来 SQL Server 2022 中将会有一个非 pip 工具。 (2认同)
  • 这也适用于 Anaconda!谢谢 (2认同)

luc*_*ald 24

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

$ brew update && brew upgrade pyenv
Run Code Online (Sandbox Code Playgroud)

然后重新安装python版本:

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

请注意,像这样覆盖现有的 python 安装有点脏,但就我而言,它确实有效。删除它然后正确地重新创建它可能更干净。


lim*_*boy 17

对于未来尝试解决此问题的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
Run Code Online (Sandbox Code Playgroud)

然后cd到你的Python3.X库并运行:

make
make install 
Run Code Online (Sandbox Code Playgroud)

  • 这些库是什么?为什么需要它们? (2认同)

Raf*_*l B 17

对于Debian用户,可以使用以下内容:

sudo -s

apt install libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev libtk8.5 libgdm-dev libdb4o-cil-dev libpcap-dev
Run Code Online (Sandbox Code Playgroud)

然后cd到包含Python 3.X库源代码的文件夹并运行:

./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了同样的问题,尝试在基于 Debian 的 Raspberry Pi 操作系统上安装 Python 3.11.1。Python >= 3.10 中的 ssl 模块需要 OpenSSL 1.1.1 或更高版本 (https://docs.python.org/3/library/ssl.html#module-ssl)。PI 仍在 Stretch 上运行(使用 OpenSSL 1.1.0)。更新 OpenSSL 后,我必须使用标志“--with-openssl=/path/to/openssl --with-openssl-rpath=auto”运行“./configure”。 (6认同)
  • python库源代码的文件夹在哪里?我尝试了以下操作,但无法在其中任何一个中运行 ./configure 。/usr/local/lib/python39.zip /usr/local/lib/python3.9 /usr/local/lib/python3.9/lib-dynload /home/user/.local/lib/python3.9/site-软件包 /usr/local/lib/python3.9/site-packages (3认同)
  • 事实证明,Python3.7与Ubuntu 14.04及更早版本一起存在不错的问题。Python3.7所需的最低SSL软件包与旧版ubuntus不兼容。因此,感谢您的编辑:) (2认同)
  • 这太棒了,谢谢!我可以建议将 `libffi<X>` 添加到此列表中吗?运行“sudo apt install ...”后,我仍然需要安装“libffi7”。 (2认同)

nam*_*994 11

为我工作。

sudo apt-get install libssl-dev
Run Code Online (Sandbox Code Playgroud)

使用它来为 pip 启用 ssl。如果有人遇到问题,请告诉我。


小智 11

在 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
Run Code Online (Sandbox Code Playgroud)

zlib1g-devbuild-essential的安装指令是多余的,因为 ubuntu 桌面已经有这些,但对于某些 Amazon EC2 实例来说是必需的。python 3.8.0 是当前版本,但应替换为最新版本。

这些说明最适合将 python 3.7 保留为 python3 的默认值,并在虚拟环境中运行 python 3.8。


PDH*_*ide 8

对于centos 7:

安装openssl:

sudo yum install openssl-devel
Run Code Online (Sandbox Code Playgroud)

现在转到python目录,我们提取了python tar,

运行以下命令

sudo ./configure
sudo make
sudo make install
Run Code Online (Sandbox Code Playgroud)

这将在centos中解决问题

  • 不适用于 Centos 7 上的 Python3.10.6 (10认同)
  • 不适用于“RedHat 7.9”上的“Python3.10.6”。 (7认同)
  • 不适用于 Python 3.8。还有其他可能的解决方案吗? (4认同)
  • 我看到“Package 1:openssl-devel-1.0.2k-25.el7_9.x86_64 已安装且最新版本”,所以当我构建 python 3.10.4 时这是可用的 (3认同)

Iza*_*ana 6

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

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

pyenv install 3.6.8
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
...
Run Code Online (Sandbox Code Playgroud)

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


小智 5

对于OpenSUSE,使用相同的方式,但对上面列出的软件包进行了一些更改:

zypper install zlib-devel libopenssl-devel ncurses-devel sqlite3-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel
Run Code Online (Sandbox Code Playgroud)

然后cd到Python源dir和

make
make install
Run Code Online (Sandbox Code Playgroud)

要么

make
make altinstall
Run Code Online (Sandbox Code Playgroud)

也许

ln -s /usr/local/lib64/python3.6/lib-dynload/ /usr/local/lib/python3.6/lib-dynload
Run Code Online (Sandbox Code Playgroud)

应该为OpenSUSE用户执行。参见Python 3.7安装不适用于openSUSE Leap 42.3


Tok*_*kci 5

对于Windows 10和Windows 7,如果CMD提示符下的pip安装不起作用,请使用Anaconda提示符运行它-可以。

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

  • 我知道正确的答案,如果要在普通cmd中使用pip,而不是Anaconda提示,则需要添加3个环境路径:像这样:D:\ Anaconda3; D:\ Anaconda3 \脚本; D:\ Anaconda3 \ Library \ bin现在仅脚本! (3认同)

小智 5

只需尝试通过 Anaconda 提示符进行安装


小智 5

我在 Visual Studio Code 中从 VS Code 提示符安装 pylint 时遇到了这个问题。我能够通过打开 Anaconda 安装目录并运行来解决这个问题

pip install pylint
Run Code Online (Sandbox Code Playgroud)

然后 VS Code 很高兴,但这并没有解决运行时的问题

& C:/Users/happy/Anaconda3/python.exe -m pip install -U pylint
Run Code Online (Sandbox Code Playgroud)

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

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

最好的方法是确保 VS code 选择了正确的 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\
Run Code Online (Sandbox Code Playgroud)

您的 Anaconda 安装目录可能有所不同。需要注意的是,Windows 直到您重新启动终端后 PATH 变量才会生效。在这种情况下,关闭并重新操作 VS 代码。如果使用终端或 PS Shell,则关闭并重新打开并检查路径以确保其包含在内。


小智 5

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

brew upgrade openssl
Run Code Online (Sandbox Code Playgroud)

如果您使用brew安装了python,这应该可以直接解决问题,因为python依赖于openssl


Tar*_*aro 5

最新的 Python 3.8.4 或更高版本应该能够开箱即用地支持 https 协议。如果您的电脑上仍然安装了旧的 python - 手动下载并安装 python3,或使用 Chocolatey:

如果您没有 Chocolatey,请从此处安装它:https://chocolatey.org/docs/installation

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

choco install python3
Run Code Online (Sandbox Code Playgroud)

如果你没有安装 python3,或者你已经安装了它 - 那么:

choco upgrade python3
Run Code Online (Sandbox Code Playgroud)

另请注意,您还可以使用 anaconda 发行版,因为它内置了带有 https 支持的 python,但这是相当古老的说明,无需再遵循它们。

使用命令行安装 anaconda:

choco install anaconda3
Run Code Online (Sandbox Code Playgroud)

设置环境变量:

set PATH=C:\tools\Anaconda3\Scripts;C:\tools\Anaconda3;C:\tools\Anaconda3\Library\bin;%PATH%
Run Code Online (Sandbox Code Playgroud)

然后运行失败的命令。就我而言,是:

pip install conan
Run Code Online (Sandbox Code Playgroud)

Anaconda 使用单独的 python 安装,pip 也是 anaconda 特定的。


小智 5

就我而言,我重新安装了 Python。它解决了这个问题。

brew reinstall python
Run Code Online (Sandbox Code Playgroud)


mad*_*adx 5

为我工作。

pkg install openssl
Run Code Online (Sandbox Code Playgroud)

使用它来启用 ssl。

  • 也为我工作(尝试通过 Termux 安装 Django)。安卓 8。谢谢。 (4认同)