我已经在我的本地机器上成功安装了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>?


当前回答

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

唯一有效的方法是:

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

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

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

其他回答

(Windows上不行!)

这让我抓狂了一个星期,所以我希望这能帮助到一些人

除了重新安装Anaconda和/或Jupyter,我尝试了所有方法。

设置

AWS Linux 手动安装Anaconda 3-5.3.0 Python3(3.7)在anaconda(即。/anaconda3/bin/python)中运行 还有/usr/bin/python和/usr/bin/python3(但这些没有被使用,因为大部分工作都是在Jupyter的终端上完成的)

Fix

在木星的终端:

所以cp / usr / lib64 libssl。10 . anaconda3 / lib / libssl如此。1 . 0 0

所以cp / usr / lib64 libcrypto。10 . anaconda3 / lib / libcrypto如此。1 . 0 0

是什么引发了这一切?

所以,这一切都在工作,直到我尝试做一个conda安装conda锻造

我不知道发生了什么,但conda一定更新了openssl的盒子(我猜),所以在这之后,一切都崩溃了。

基本上,我不知道,conda已经更新了openssl,但不知怎么地删除了旧的库,并用libssl.so.1.1和libcrypt .so.1.1替换了它。

我猜,Python3被编译为查找libssl.so.1.0.0

最后,诊断的关键是:

import ssl;打印(ssl.OPENSSL_VERSION)”

给出提示库“libssl.so.1.0.0”未找到

我做了一个很大的假设,即ssl的yum版本与conda版本相同,因此只要重命名共享对象就可以工作,事实也确实如此。

我的另一个解决方案是重新编译python,重新安装anaconda等等,但最后我很高兴我不需要这样做。

希望这能帮到你们。

在Ubuntu中安装Python 3.6和pip3的分步指南

安装Python和ssl所需的包:$ sudo apt-get Install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev 下载并解压“Python-3.6.8.tar. zip”。Xz”从https://www.python.org/ftp/python/到您的主目录。 打开该目录下的终端,执行:$ ./configure 编译和安装:$ make && sudo make install 使用$ pip3 Install package_name安装包

声明:以上命令未在Ubuntu 20.04 LTS中测试。

我也遇到了同样的问题,并能够通过以下步骤解决:

sudo yum install -y libffi-devel
sudo yum install openssl-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
sudo tar xf Python-3.7.1.tar.xz
cd Python-3.7.1
sudo ./configure --enable-optimizations
# Install into /usr/local/bin/python3.7, don't overwrite global python bin
sudo make altinstall

根据烫发的不同,你可能不需要sudo。

Results:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

现在应该可以运行了吗

python3.7 -V 

and

pip3.7 -V

安装包时:

pip3.7 install pandas

或者根据烫发,你也可以像这样添加——user标志:

pip3.7 install pandas --user

从源代码构建是我在Ubuntu 22.10上的工作方式:

手动安装OpenSSL,在这里用OpenSSL 1.1.1测试,提取然后运行:

./config --prefix='/opt/openssl' --openssldir='/opt/ssl'
make
make install

然后使用旧版本的Python 3(这里是Python-3.8.16)运行:

export LD_RUN_PATH='/opt/openssl/lib'
export CC='gcc-12'  # sudo apt install gcc-12
./configure --enable-optimizations \
            --with-openssl='/opt/openssl' \
            --prefix='/opt/python/3.8' -C
make
make install

测试:

/opt/python/3.8/bin/python3 -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.1.1s  1 Nov 2022

如果你在Windows上使用anaconda,这对我来说是有效的:

我尝试了很多其他的解决方案,但没有工作(环境路径变量变化…)

该问题可能是由其他软件放置在Windows\System32文件夹中的dll(例如libcrypto-1_1-x64.dll或libssl-1_1-x64.dll或其他)引起的。

修复方法是从https://slproweb.com/products/Win32OpenSSL.html安装openSSL,它将dll替换为最新版本。