我已成功在本地计算机上安装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.x安装,以便我可以使用pip install <package>
安装软件包?
答案 0 :(得分:52)
在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
下载并解压缩&#34; Python-3.6.8.tar.xz&#34;从https://www.python.org/ftp/python/进入您的主目录。
在该目录中打开终端并运行:$ ./configure
构建并安装:$ sudo make && sudo make install
使用以下内容安装软件包:$ pip3 install package_name
答案 1 :(得分:44)
由于在OSX 10.11上安装了memcached,它在3.6之上安装了python 3.7,因此在OSX 10.11上也有类似的问题。
警告:pip配置了需要TLS / SSL的位置,但是Python中的ssl模块不可用。
花了几个小时取消openssl的链接,重新安装,更改路径..没有任何帮助。将openssl版本从原来的版本更改回旧版本可以达到目的:
brew switch openssl 1.0.2e
我在互联网上的任何地方都没有看到这个建议。希望它能为某人服务。
答案 2 :(得分:43)
如果您使用的是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
答案 3 :(得分:13)
如果您在Windows上并使用anaconda ,这对我有用:
我尝试了许多其他无效的解决方案(环境PATH变量已更改...)
此问题可能是由其他软件放置在Windows \ System32文件夹中的DLL(例如libcrypto-1_1-x64.dll或libssl-1_1-x64.dll或其他)引起的。
此修复程序是从https://slproweb.com/products/Win32OpenSSL.html安装openSSL的,它将dll替换为较新的版本。
答案 4 :(得分:9)
同意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"
答案 5 :(得分: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
中的更多信息
答案 6 :(得分:6)
降级openssl对我有用,
brew switch openssl 1.0.2s
答案 7 :(得分:5)
在Ubuntu中,这可以帮助:
cd Python-3.6.2
./configure --with-ssl
make
sudo make install
答案 8 :(得分:4)
如果您使用的是OSX并且已经从源代码编译了python:
使用brew brew install openssl
请务必按照brew提供的有关设置CPPFLAGS
和LDFLAGS
的说明进行操作。在我的情况下,我使用openssl@1.1
brew公式,我需要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"
假设该库安装在该位置。
答案 9 :(得分:3)
我的问题似乎与我的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
答案 10 :(得分:3)
我在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)您可以在官方website上再次下载python;
2)导航到"Python 3.7 (64-bit).lnk"
所在的目录
3)import ssl
和exit()
4)输入cmd,例如"Python 3.7 (64-bit).lnk" -m pip install tensorflow
。
在这里,您已经准备就绪。
答案 11 :(得分:2)
ssl
模块是TLS / SSL包装器,用于访问操作系统(OS)套接字(Lib/ssl.py)。因此,当ssl
模块不可用时,很可能您没有安装OS OpenSSL库,或者在安装Python时找不到这些库。假设这是以后的情况(又名:您已经安装了OpenSSL,但在安装Python时未正确链接它们)。
我还将假设您从源代码安装。如果要从二进制文件(即Window .exe文件)或软件包(Mac .dmg或Ubuntu apt)进行安装,则安装过程将无济于事。
在配置python安装的步骤中,您需要指定OS OpenSSL用于链接的位置:
# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"
那么您将在哪里找到已安装的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
您的系统可能与我的系统不同,但是正如您在此处看到的,我安装了许多不同的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
./configure --with-openssl="/usr"
make && make install
您可能需要尝试一些或安装新的库,以找到适用于您的Python和操作系统的库。
答案 12 :(得分:2)
我在Debian9上安装python3.8.5时遇到了同样的问题。我已经完成了构建,但是当我尝试下载一些模块时,pip3.8发出了以下错误:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
我搜索了问题的根源,发现python构建有系统相关的部分,该部分由系统独立的部分调用。如果缺少ssl,您只需要打开python终端并检查_ssl是否存在:
>>> help('modules')
.
.
_sre enum pwd wave
_ssl errno py_compile weakref
_stat faulthandler pyclbr webbrowser
.
.
如果不是,则缺少与系统有关的ssl模块部件。您还可以通过列出
>ls ./lib/python3.8/lib-dynload | grep ssl
_ssl.cpython-38-x86_64-linux-gnu.so
该问题是由PengShaw编写的,因为在构建过程中缺少libssl-dev。因此,您必须遵循推荐的python安装流程。首先安装先决条件,然后构建并安装python。在没有开发版本的lib的情况下进行安装导致我的情况下缺少系统相关部分。在这种情况下_ssl。
请注意,Debian和CentOS的devel lib名称不同,因此请检查发布在网上的安装提示是否适合您的特定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
在配置和evtl之前列出配置选项肯定是个好主意。使用一些其他选项:
./configure --help
最后但并非最不重要的是,如果您将--prefix用于非默认安装位置,请记住将
答案 13 :(得分:2)
如果您在Windows上并使用Anaconda ,则可以尝试在Anaconda Prompt(而不是cmd.exe)中运行“ pip install ...”命令,如用户willliu1995建议的here。对于我来说,这是最快的解决方案,不需要安装其他组件。
答案 14 :(得分:1)
我尝试了很多解决此问题的方法,但都没有解决。我目前在Windows 10上。
唯一起作用的是:
然后我已经使用PIP下载了我需要的所有库...并且可以使用!
不知道为什么,或者问题是否与水蟒有关。
答案 15 :(得分:1)
您可以执行以下两个操作之一:
或
\ Anaconda
\ Anaconda \ Library \ mingw-w64 \ bin
\ Anaconda \ Library \ usr \ bin
\ Anaconda \ Library \ bin
\ Anaconda \脚本
\ anaconda \ Library
\ anaconda \ condabin
答案 16 :(得分:1)
在使用Mac的情况下,我删除了
/Applications/Python 3.7
。
因为我已经通过brew install python3
拥有了Python3.7。
但这是消息的触发因素
pip配置了需要TLS / SSL的位置,但是Python中的ssl模块不可用。
我当时的情况
/Applications/Python3.6/Install Certificates.command
和/Applications/Python3.6/Update Shell Profile.command
。pip.conf
,但可能对成功有所贡献。参见pip install fails。答案 17 :(得分:1)
我遇到了同样的问题,并且可以通过以下步骤解决:
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
和
pip3.7 -V
安装软件包时:
pip3.7 install pandas
或根据权限,还可以添加--user标志,如下所示:
pip3.7 install pandas --user
答案 18 :(得分:1)
我终于解决了这个问题。这些是我的环境的细节:
要安装的Python版本:3.6.8
作业系统:Ubuntu 16.04.6 LTS
根访问权限:否
有人建议安装libssl-dev
,但对我而言不起作用。我遵循this link,并进行了修复!
简而言之,我下载,提取,构建和安装OpenSSL(openssl-1.1.1b.tar.gz)。然后,我修改.bashrc
文件follow this link。
接下来,我下载并解压缩Python-3.6.8.tgz。我编辑Modules / Setup.dist来修改SSL路径(#211周围的行)。我做了./configure --prefix=$HOME/opt/python-3.6.8
,make
和make install
。最后,我修改了.bashrc
。请注意,我没有在--enable-optimizations
中包括./configure
。
答案 19 :(得分:1)
我能够通过更新此文件中的python版本来解决此问题。 pyenv:未安装版本“ 3.6.5”(由/Users/taruntarun/.python-version设置) 尽管我安装了最新版本,但是我的命令仍在使用旧版本3.6.5
移至版本3.7.3
答案 20 :(得分:0)
过去两天我遇到了同样的问题,现在只修好了。
我曾尝试使用--trust-host
选项而DigiCert_High_Assurance_EV_Root_CA.pem
无法正常工作,我无法安装ssl模块(它告诉它无法安装大于2.6的python版本),设置$PIP_CERT
变量也没有修复它,我安装了libssl1.0.2
和libssl1.0.0
。另外值得一提的是,我没有~/.pip/pip.conf
文件,创建它也没有解决这个问题。
最终解决了什么,是再次使用make
安装python3.6。
从网站下载Python-3.6.0.tgz,运行configure
,然后make
,make test
和make install
。希望它适合你。
答案 21 :(得分:0)
在macOS上,使用以下命令配置python 3.8.1将解决该问题,我认为它也可以在Linux上运行。
./configure --enable-optimizations --with-openssl=/usr/local/opt/openssl@1.1/
根据您的系统更改dir参数。
答案 22 :(得分:0)
如果您使用的是OSX,并且其他解决方案对您不起作用(就像我一样)。
您可以尝试卸载python3并升级pip3
brew uninstall --ignore-dependencies python3
pip3 install --upgrade pip
这对我有用;)
答案 23 :(得分:0)
我在尝试在ubuntu14.04机器上安装python3.7时遇到了同样的问题。 问题是我在PKG_CONFIG_PATH和LD_LIBRARY_PATH中有一些自定义文件夹,这阻止了python构建过程找到系统openssl库。
所以尝试清除它们,看看会发生什么:
select A,B from
(select A,(
SELECT count(*) from T1t where a.id >= t.id
) AS rownr from T1 a)X
inner join
(select B,(
SELECT count(*) from T2 t where a.id >= t.id
) AS rownr from T2 a)Y on X.rownr=Y.rownr
答案 24 :(得分:0)
(不在Windows上!)
这让我把头发扯了一个星期,所以我希望这对某人有帮助
除了重新安装Anaconda和/或Jupyter外,我尝试了所有尝试。
设置
./anaconda3/bin/python
)内部运行/usr/bin/python
和/usr/bin/python3
(但由于大部分工作是在Jupyter的终端机中完成的,因此并未使用)修复
在Jupyter的终端中:
cp /usr/lib64/libssl.so.10 ./anaconda3/lib/libssl.so.1.0.0
cp /usr/lib64/libcrypto.so.10 ./anaconda3/lib/libcrypto.so.1.0.0
是什么触发的?
所以,在我尝试做一个conda install conda-forge
我不确定发生了什么,但是conda必须在盒子上更新了openssl
(我猜是这样),所以在此之后,一切都坏了。
基本上,我不知道conda更新了openssl,但是不知何故删除了旧库,并用libssl.so.1.1
和libcrypto.so.1.1
代替了。
我猜Python3已编译为寻找libssl.so.1.0.0
最后,诊断的关键是:
python -c "import ssl; print (ssl.OPENSSL_VERSION)"
提供线索library "libssl.so.1.0.0" not found
我做出的巨大假设是ssl的yum
版本与conda
版本相同,因此只要重命名共享库就可以了,而且确实如此。
我的另一个解决方案是重新编译python,重新安装anaconda等,但最后我很高兴我不需要。
希望这可以帮助你们。
答案 25 :(得分:0)
在Mac OS Catalina上使用pyenv
管理python安装的情况下,我必须先用brew安装openssl
,然后再运行pyenv install 3.7.8
,这似乎可以构建python使用自制软件的openssl
进行安装(甚至在安装输出中也是如此)。然后pyenv global 3.7.8
,我不在了。
答案 26 :(得分:-1)
确定最新的答案,到目前为止,不要使用Python 3.8 ,请仅使用3.7或更少版本,因为大多数库由于上述错误而无法安装
答案 27 :(得分:-1)
python documentation实际上非常清楚,并且按照说明进行了工作,而我在这里找到的其他答案都不能解决此问题。
首先,使用例如版本3.6.2 https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
通过运行brew install openssl
将其解压缩并移至python目录:tar xvzf Python-3.6.2.tar.xz && cd Python-3.6.2
然后如果python版本是<3.7,请运行
CPPFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
./configure --with-pydebug
5.最后,运行make -s -j2
(-s
是静默标志,-j2
告诉您的计算机使用2个作业)
答案 28 :(得分:-2)
如果在 Windows 中使用 anaconda,那么我首先解决了这个问题,
conda activate
pip install <lib>
这对我有用。