使用pip3安装软件包时,“Python中的SSL模块不可用”

问题描述 投票:44回答:13

我已成功在本地计算机上安装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>安装软件包?

python ssl pip
13个回答
56
投票

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

  1. 安装Python和ssl:$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev所需的软件包
  2. https://www.python.org/ftp/python/下载并解压缩“Python-3.6.8.tar.xz”到您的主目录。
  3. 在该目录中打开终端并运行:$ ./configure
  4. 构建和安装:$ sudo make && sudo make install
  5. 使用以下命令安装软件包:$ pip3 install package_name

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

或者根据perms,你也可以像这样添加--user标志:

pip3.7 install pandas --user

0
投票

我在过去两天遇到了同样的问题,现在才修好了。

我曾尝试使用--trust-host选项与DigiCert_High_Assurance_EV_Root_CA.pem不起作用,我无法安装ssl模块(它告诉它不能安装大于2.6的python版本),设置$PIP_CERT变量也没有修复它我也有安装了libssl1.0.2libssl1.0.0。另外值得一提的是我没有~/.pip/pip.conf文件,并且创建它也没有解决bug。

什么最终解决了,再次安装python3.6与make。从网站下载Python-3.6.0.tgz,运行configure然后makemake testmake install。希望对你有效。


0
投票

我试图在ubuntu14.04机器上安装python3.7时遇到同样的问题。问题是我的PKG_CONFIG_PATH和我的LD_LIBRARY_PATH中有一些自定义文件夹,这阻止了python构建过程找到系统openssl库。

所以试着清除它们,看看会发生什么:

export PKG_CONFIG_PATH=""
export LD_LIBRARY_PATH=""

0
投票

我尝试了很多方法来解决这个问题而没有解决。我目前在Windows 10上。

唯一有效的是:

  • 卸载Anaconda
  • 卸载Python(我使用的是3.7.3版本)
  • 再次安装Python(记得检查选项以自动添加到PATH)

然后我用PIP下载了我需要的所有库...并且工作了!

不知道为什么,或者问题是否与Anaconda有某种关系。


-1
投票

python documentation实际上非常清楚,按照说明完成了工作,而我在这里找到的其他答案并没有解决这个问题。

  1. 首先,使用版本3.6.2 https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz从源代码安装python 3.x.x.
  2. 确保通过运行brew install openssl安装openssl
  3. 解压缩并移动到python目录:tar xvzf Python-3.6.2.tar.xz && cd Python-3.6.2
  4. 然后如果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个工作)


45
投票

如果您使用的是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

20
投票

如果你在Windows上并使用anaconda这对我有用:

我尝试了很多其他不起作用的解决方案(环境路径变量更改......)

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

修复程序是从https://slproweb.com/products/Win32OpenSSL.html安装openSSL,它用更新的版本替换了dll。


9
投票

同意mastaBlasta的回答。为我工作。我遇到了与主题描述相同的问题。

环境:MacOS Sierra。我使用Homebrew。

我的解决方案

  1. 通过brew uninstall openssl, brew install openssl重新安装openssl;
  2. 根据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"

7
投票

在Ubuntu中,这可以帮助:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

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

有关How to Install Python 3.6.0 on Ubuntu & LinuxMint的更多信息


5
投票

我在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"is所在的目录

3)import sslexit()

4)输入cmd,例如"Python 3.7 (64-bit).lnk" -m pip install tensorflow

在这里,你们都准备好了。


4
投票

如果你在OSX上并且已经从源代码编译了python:

使用brew brew install openssl安装openssl

请务必按照brew提供的有关设置CPPFLAGSLDFLAGS的说明。在我的情况下,我使用[email protected] brew公式,我需要python构建过程的这3个设置才能正确链接到我的SSL库:

export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"

假设库安装在该位置。


3
投票

如果您在Windows上并使用Anaconda,您可以尝试在Anaconda Prompt中运行“pip install ...”命令而不是cmd.exe,因为用户willliu1995建议使用here。这对我来说是最快的解决方案,不需要安装额外的组件。

© www.soinside.com 2019 - 2024. All rights reserved.