我已经在我的本地机器上成功安装了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上不行!)
这让我抓狂了一个星期,所以我希望这能帮助到一些人
除了重新安装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等等,但最后我很高兴我不需要这样做。
希望这能帮到你们。
我也遇到了同样的问题,并能够通过以下步骤解决:
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