我已成功在本地计算机上安装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>
Run Code Online (Sandbox Code Playgroud)
如何修复我的Python3.x安装,以便我可以安装包pip install <package>?
ars*_*sho 71
在Ubuntu中安装Python 3.6和pip3的分步指南
从https://www.python.org/下载Python-3.6.1.tar.xz
解压缩文件并将文件夹保留在主目录中.
在该目录中打开终端并执行以下命令:
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
$ ./configure现在编写以下内容以重新运行安装:
$ sudo make && sudo make install
现在您可以$ pip3 install package_name使用pip3命令安装软件包.例如:
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
The*_*inn 54
如果您使用的是Red Hat/CentOS:
# To allow for building python ssl libs
yum install openssl-devel
# Download the source of *any* python version
cd /usr/src
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar xf Python-3.6.2.tar.xz
cd Python-3.6.2
# Configure the build w/ your installed libraries
./configure
# Install into /usr/local/bin/python3.6, don't overwrite global python bin
make altinstall
Run Code Online (Sandbox Code Playgroud)
dso*_*nus 45
由于安装了在 3.6 之上安装了 python 3.7 的 memcached,我在 OSX 10.11 上遇到了类似的问题。
警告:pip 配置了需要 TLS/SSL 的位置,但是 Python 中的 ssl 模块不可用。
花了几个小时断开openssl的链接,重新安装,更改路径......没有任何帮助。将 openssl 版本从旧版本更改回旧版本可以解决问题:
brew switch openssl 1.0.2e
Run Code Online (Sandbox Code Playgroud)
我在互联网上的任何地方都没有看到这个建议。希望它为某人服务。
jue*_*rgi 42
如果您使用Windows并使用anaconda,则对我有用:
我尝试了许多其他无效的解决方案(环境PATH变量更改...)
该问题可能是由其他软件放置在Windows \ System32文件夹中的DLL(例如libcrypto-1_1-x64.dll或libssl-1_1-x64.dll或其他)引起的。
该修补程序是从https://slproweb.com/products/Win32OpenSSL.html安装openSSL的,它将dll替换为较新的版本。
小智 13
同意mastaBlasta的回答.为我工作.我遇到了与主题描述相同的问题.
环境:MacOS Sierra.我使用Homebrew.
我的解决方案
brew uninstall openssl, brew install openssl;根据Homebrew提供的提示,执行以下操作:
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
小智 10
我在 Debian9 上安装 python3.8.5 时遇到了同样的问题。我已经完成了构建,但是当我尝试下载一些模块时,pip3.8 发出以下错误:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Run Code Online (Sandbox Code Playgroud)
我已经搜索了我的问题的根源,并发现 python 构建中有一个系统相关的部分,它被系统无关的部分调用。如果缺少 ssl,您只需要打开 python 终端并检查 _ssl 是否存在:
>>> help('modules')
.
.
_sre enum pwd wave
_ssl errno py_compile weakref
_stat faulthandler pyclbr webbrowser
.
.
Run Code Online (Sandbox Code Playgroud)
如果不是,您的系统相关 ssl 模块部分丢失。您也可以通过列出 <python_installation_root>/lib/python3.8/lib-dynload 的内容来检查它:
>ls ./lib/python3.8/lib-dynload | grep ssl
_ssl.cpython-38-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)
该问题是由 PengShaw 编写的,因为在构建过程中缺少 libssl-dev。因此,您必须遵循推荐的 python 安装流程。首先安装先决条件,然后构建并安装python。在没有开发版本的库的情况下安装导致我的情况缺少系统相关部分。在这种情况下_ssl。
请注意,Debian 和 CentOS 的 devel 库名称不同,因此请检查网上发布的安装提示是否适合您的特定 Linux 系统类型:
For Debian:
sudo apt install -y libbz2-dev libffi-dev libssl-dev
./configure --enable-optimizations
make
make altinstall
For CentOS:
sudo yum -y install bzip2-devel libffi-devel openssl-devel
./configure --enable-optimizations
make
make altinstall
Run Code Online (Sandbox Code Playgroud)
在配置和 evtl 之前列出配置选项肯定是个好主意。使用一些额外的选项:
./configure --help
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的是,如果您将 --prefix 用于非默认安装位置,请记住将您的 <python_installation_root>/lib 添加到您的 LD_LIBRARY_PATH 。
我的问题似乎与我的 python 安装有关,并通过重新安装 python3 和 pip 很快得到解决。我认为它在操作系统更新后开始出现异常,但谁知道呢(此时我使用的是 Mac OS 10.14.6)
brew reinstall python3 --force
# setup pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
# installa pkg successfully
pip install pandas
Run Code Online (Sandbox Code Playgroud)
小智 6
问题可能是由于库丢失造成的.
在安装python 3.6之前,请确保安装了python所需的所有库.
$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
Run Code Online (Sandbox Code Playgroud)
有关如何在Ubuntu和LinuxMint上安装Python 3.6.0的更多信息
如果您使用的是 OSX 并且已经从源代码编译了 python:
使用 brew 安装 openssl brew install openssl
确保按照 brew 为您提供的有关设置CPPFLAGS和LDFLAGS. 在我的情况下,我使用openssl@1.1brew 公式,我需要 python 构建过程的这 3 个设置才能正确链接到我的 SSL 库:
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
Run Code Online (Sandbox Code Playgroud)
假设库安装在该位置。
小智 6
在Ubuntu中,这可以帮助:
cd Python-3.6.2
./configure --with-ssl
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
您可以执行以下两项操作之一:
或者
\水蟒
\Anaconda\Library\mingw-w64\bin
\Anaconda\Library\usr\bin
\Anaconda\Library\bin
\Anaconda\脚本
\anaconda\图书馆
\anaconda\condabin
将上述路径添加到“Path”系统变量中,它应该不再显示错误:)
我在Windows 10上遇到了同样的问题。我的非常具体的问题是由于安装了Anaconda。我安装了Anaconda并在路径下Path/to/Anaconda3/出现了python.exe。因此,我完全没有安装python,因为Anaconda包含python。使用pip安装软件包时,我发现了相同的错误报告pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.。
解决方案如下:
1)您可以在官方网站上再次下载python ;
2)导航到的目录,其中"Python 3.7 (64-bit).lnk"位于
3)import ssl和exit()
4)例如输入cmd "Python 3.7 (64-bit).lnk" -m pip install tensorflow。
在这里,您都准备好了。
我尝试了很多方法来解决这个问题,但都没有解决。我目前使用的是 Windows 10。
唯一有效的是:
然后我使用 PIP 下载了我需要的所有库......并且工作了!
不知道为什么,或者问题是否与 Anaconda 有某种关系。
该ssl模块是一个 TLS/SSL 包装器,用于访问操作系统 (OS) 套接字 ( Lib/ssl.py )。因此,当ssl模块不可用时,很可能您没有安装操作系统 OpenSSL 库,或者在安装 Python 时找不到这些库。假设这是后一种情况(又名:您已经安装了 OpenSSL,但在安装 Python 时它们没有正确链接)。
我还假设您是从源代码安装的。如果您从二进制文件(即:Window .exe 文件)或软件包(Mac .dmg 或 Ubuntu apt)进行安装,则在安装过程中您无能为力。
在配置 python 安装的步骤中,您需要指定 OS OpenSSL 将用于链接的位置:
# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"
Run Code Online (Sandbox Code Playgroud)
那么在哪里可以找到已安装的 OpenSSL 目录呢?
# ubuntu
locate ssl.h | grep '/openssl/ssl.h'
/home/user/.linuxbrew/Cellar/openssl/1.0.2r/include/openssl/ssl.h
/home/user/envs/py37/include/openssl/ssl.h
/home/user/miniconda3/envs/py38b3/include/openssl/ssl.h
/home/user/miniconda3/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.0.2s-h7b6447c_0/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1b-h7b6447c_1/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1c-h7b6447c_1/include/openssl/ssl.h
/usr/include/openssl/ssl.h
Run Code Online (Sandbox Code Playgroud)
您的系统可能与我的不同,但正如您在此处看到的,我安装了许多不同的 openssl 库。截至撰写本文时,python 3.8 需要 openssl 1.0.2 或 1.1:
Python 需要使用 X509_VERIFY_PARAM_set1_host() 的 OpenSSL 1.0.2 或 1.1 兼容 libssl。
因此,您需要验证哪些已安装的库可以用于链接,例如
/usr/bin/openssl version
OpenSSL 1.0.2g 1 Mar 2016
Run Code Online (Sandbox Code Playgroud)
./configure --with-openssl="/usr"
make && make install
Run Code Online (Sandbox Code Playgroud)
您可能需要尝试一些,或者安装一个新的,才能找到适合您的 Python 和操作系统的库。
| 归档时间: |
|
| 查看次数: |
146868 次 |
| 最近记录: |