111

I have a difficult time using pip to install almost anything. I'm new to coding, so I thought maybe this is something I've been doing wrong and have opted out to easy_install to get most of what I needed done, which has generally worked. However, now I'm trying to download the nltk library, and neither is getting the job done.

I tried entering

sudo pip install nltk

but got the following response:

/Library/Frameworks/Python.framework/Versions/2.7/bin/pip run on Sat May  4 00:15:38 2013
Downloading/unpacking nltk

  Getting page https://pypi.python.org/simple/nltk/
  Could not fetch URL [need more reputation to post link]: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm>

  Will skip URL [need more reputation to post link]/simple/nltk/ when looking for download links for nltk

  Getting page [need more reputation to post link]/simple/
  Could not fetch URL https://pypi.python. org/simple/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm>

  Will skip URL [need more reputation to post link] when looking for download links for nltk

  Cannot fetch index base URL [need more reputation to post link]

  URLs to search for versions for nltk:
  * [need more reputation to post link]
  Getting page [need more reputation to post link]
  Could not fetch URL [need more reputation to post link]: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm>

  Will skip URL [need more reputation to post link] when looking for download links for nltk

  Could not find any downloads that satisfy the requirement nltk

No distributions at all found for nltk

Exception information:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
    status = self.run(options, args)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 266, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/req.py", line 1026, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/index.py", line 171, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for nltk

--easy_install installed fragments of the library and the code ran into trouble very quickly upon trying to run it.

Any thoughts on this issue? I'd really appreciate some feedback on how I can either get pip working or something to get around the issue in the meantime.

Elrond_EGLDer
  • 47,430
  • 25
  • 189
  • 180
contentclown
  • 1,141
  • 2
  • 8
  • 8
  • 2
    For folks, who are getting this error `[SSL: TLSV1_ALERT_PROTOCOL_VERSION]` for all `pip install`s, it is because of the recent TLS deprecation by Python.org sites. See [this answer](https://stackoverflow.com/a/49769015/1526703) – Anupam Jun 12 '18 at 07:02

26 Answers26

139

I found it sufficient to specify the pypi host as trusted. Example:

pip install --trusted-host pypi.python.org pytest-xdist
pip install --trusted-host pypi.python.org --upgrade pip

This solved the following error:

  Could not fetch URL https://pypi.python.org/simple/pytest-cov/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) - skipping
  Could not find a version that satisfies the requirement pytest-cov (from versions: )
No matching distribution found for pytest-cov

Update April 2018: To anyone getting the TLSV1_ALERT_PROTOCOL_VERSION error: it has nothing to do with trusted-host/verification issue of the OP or this answer. Rather the TLSV1 error is because your interpreter does not support TLS v1.2, you must upgrade your interpreter. See for example https://news.ycombinator.com/item?id=13539034, http://pyfound.blogspot.ca/2017/01/time-to-upgrade-your-python-tls-v12.html and https://bugs.python.org/issue17128.

Update Feb 2019: For some it may be sufficient to upgrade pip. If the above error prevents you from doing this, use get-pip.py. E.g. on Linux,

curl https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

More details at https://pip.pypa.io/en/stable/installing/.

Oliver
  • 21,908
  • 4
  • 55
  • 73
  • 4
    This worked for me, years later, on a windows system – Allen Butler Aug 31 '16 at 15:46
  • Worked for me using pip3 on a mac – gmogames Dec 08 '16 at 03:05
  • I was given this message no such `option: --trusted-host ` – MoDrags Apr 13 '17 at 22:43
  • 26
    I still get an error- `Could not fetch URL https://pypi.python.org/simple/pytest-xdist/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping` – Sankalp Apr 11 '18 at 08:40
  • it doesn't work for me :/ I tried: sudo -H pip install --trusted-host pypi.python.org numpy or sudo pip install --trusted-host pypi.python.org numpy no luck. Running high sierra on a macbookpro 15". Funny thing, with my previous installation on another mac (same osx it worked, any ideas? – DaniPaniz Apr 11 '18 at 18:50
  • I'm getting the same issue! ` (venv) locust sch699$ sudo -H pip install --no-cache-dir -r requirements.txt --proxy=$http_proxy --trusted-host pypi.python.org Collecting ansible==2.4.2.0 (from -r requirements.txt (line 1)) Could not fetch URL https://pypi.python.org/simple/ansible/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping Could not find a version that satisfies the requirement ansible==2.4.2.0 (from -r requirements.txt (line 1)) (from versions: )` – peterpod Apr 11 '18 at 19:01
  • I finally upgrade to High Sierra and that solved the problem. – Sankalp Apr 11 '18 at 23:39
  • 3
    I have updated my answer to talk about TLSV1 as it is a totally separate issue. – Oliver Apr 12 '18 at 02:07
  • @MoDrags you probably need to upgrade pip – Oliver Apr 12 '18 at 02:09
  • @Sankalp What version of MacOS do you have? I updated yesterday to 10.12.6 and I'm still seeing issues. – peterpod Apr 12 '18 at 14:33
  • @peterpod My current OS version is 10.13.1 (17B1003) – Sankalp Apr 12 '18 at 21:46
  • 8
    @peterpod see this answer: https://stackoverflow.com/a/49769015/1526703 – Anupam Apr 14 '18 at 05:03
  • 2
    https://stackoverflow.com/questions/49768770/not-able-to-install-python-packages-ssl-tlsv1-alert-protocol-version/49769015#49769015 – truongnm Apr 15 '18 at 02:09
  • 1
    The Homebrew instructions linked here didn't work for me: http://pyfound.blogspot.ca/2017/01/time-to-upgrade-your-python-tls-v12.html. The command linked in @truongnm's comment, which uses curl to upgrade pip to version 10.0.1, is what finally worked for me. – user124384 May 06 '18 at 10:01
  • 2018, `pip install -r requirements.txt` was failing with that error message on Mac OS X Sierra 10.12, TLS 1.0; this worked for me: `curl https://bootstrap.pypa.io/get-pip.py | python` See https://stackoverflow.com/a/49769015/870121 – Mark May 18 '18 at 18:37
42

I used pip version 9.0.1 and had the same issue, all the answers above didn't solve the problem, and I couldn't install python / pip with brew for other reasons.

Upgrading pip to 9.0.3 solved the problem. And because I couldn't upgrade pip with pip I downloaded the source and installed it manually.

  1. Download the correct version of pip from - https://pypi.org/simple/pip/
  2. sudo python3 pip-9.0.3.tar.gz - Install pip

Or you can install newer pip with:

curl https://bootstrap.pypa.io/get-pip.py | python
El Developer
  • 3,261
  • 1
  • 18
  • 40
rom
  • 909
  • 7
  • 15
  • as mentioned in my comment on @apatsekin's answer, this is happening due to the recent TLS deprecation for pip. See [this answer](https://stackoverflow.com/a/49748494/1526703) for details. – Anupam Apr 12 '18 at 14:16
  • Thanks.. Can confirm the same also worked for Python 2 (am working on something legacy atm) – cardamom Apr 12 '18 at 14:23
  • If conda/anaconda is why you can't use brew or pip to update pip, then you can use `conda install pip` to install/upgrade the pip that you are using with your conda environment. You should do this in your root/base conda environment, if you have conda installed – hobs Apr 12 '18 at 18:55
  • 1
    Just installing pip `curl https://bootstrap.pypa.io/get-pip.py | python` – Sumeet Gohil Sep 20 '18 at 09:10
33

Pypi removed support for TLS versions less than 1.2

You need to re-install Pip, do

curl https://bootstrap.pypa.io/get-pip.py | python

or for global Python:

curl https://bootstrap.pypa.io/get-pip.py | sudo python
BenJi
  • 333
  • 4
  • 11
Parth Choudhary
  • 448
  • 4
  • 5
31

I used pip3 version 9.0.1 and was unable to install any packages recently via the commandpip3 install.

Mac os version: EI Captain 10.11.5.

python version: 3.5

I tried the command:

curl https://bootstrap.pypa.io/get-pip.py | python

It didn't work for me.

So I uninstalled the older pip and installed the newest version10.0.0 by entering this:

python3 -m pip uninstall pip setuptools
curl https://bootstrap.pypa.io/get-pip.py | python3

Now my problem was solved. If you are using the python2, you can substitute the python3 with python. I hope it also works for you.

By the way, for some rookies like me, you have to enter the code: sudo -i

to gain the root right :) Good luck!

Aachen
  • 411
  • 4
  • 5
27

You're probably seeing this bug; see also here.

The easiest workaround is to downgrade pip to one that doesn't use SSL: easy_install pip==1.2.1. This loses you the security benefit of using SSL. The real solution is to use a Python distribution linked to a more recent SSL library.

Community
  • 1
  • 1
Danica
  • 26,635
  • 6
  • 86
  • 118
  • 1
    Thanks Dougal, but pip 1.2.1 doesn't work out either. -Would you mind letting me know how I can update my python distribution to a more recent ssl library? – contentclown May 04 '13 at 05:33
  • actually, i just got everything to work just now. thanks for your help, Dougal! – contentclown May 04 '13 at 05:49
  • 7
    @user2348946 What did you do, so that this is useful to people in the future? – Danica May 04 '13 at 06:06
  • Hi, @Dougal , I am on Kubuntu 13.04 and also having this problem. I use the python that comes with the system, how can i get it linked to a more recent SSL library? Thanks! – qed May 09 '13 at 09:51
  • @Dougal - until someone redistributes python in the repo's for the systems - linux, win and mac - that isn't going to happen. Downloading the pip 1.2.1 tarball from pypi directly and installing this seems to be the best solution - until it works - I suggest ignoring more recent versions of pip. – Danny Staple Jul 11 '13 at 11:07
  • 1
    @DannyStaple Yes, that's exactly what I suggested. Of course, using a non-system install of Python isn't very hard; I personally use [Anaconda](http://continuum.io/downloads), which is great for numerical applications but would work for anything. – Danica Jul 11 '13 at 22:36
  • I realise in some circumstances - installing a non-system python is the preferred way - so you don't interfere with it and are not hampered by system upgrades. This is one thing you couldn't fix just by using a Virtual Env. – Danny Staple Jul 13 '13 at 11:22
  • I tried to use pip 1.2.1 it gave the error when installing cython `Could not fetch URL http://pypi.python.org/simple/Cython: HTTP Error 403: SSL is required` – user13107 May 21 '18 at 09:06
  • 1
    @user13107 Yes; as noted in the comments on the accepted answer, PyPI now requires TLS 1.2. You'll need to update your Python install. – Danica May 24 '18 at 02:05
19

Another cause of SSL errors can be a bad system time – certificates won't validate if it's too far off from the present.

pidge
  • 772
  • 7
  • 25
10

The only solution that worked for me is:

sudo curl https://bootstrap.pypa.io/get-pip.py | sudo python

gowin
  • 199
  • 2
  • 2
8

Solution - Install any package by marking below hosts trusted

  • pypi.python.org
  • pypi.org
  • files.pythonhosted.org

Temporary solution

pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org {package name}

Permanent solution - Update your PIP(problem with version 9.0.1) to latest.

pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org pytest-xdist

python -m pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org --upgrade pip
RollerCosta
  • 4,386
  • 7
  • 47
  • 69
  • Thanks a lot. After 30 tries this works perfektly. I test it with pip versions 20.2.3 and 21.0.1 – Dominik Feb 11 '21 at 10:19
7

I tried some of the popular answers, but still could not install any libraries/packages using pip install.

My specific error was 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain using Miniconda for Windows (installer Miniconda3-py37_4.8.3-Windows-x86.exe).

It finally works when I did this: pip install -r requirements.txt --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org

Specifically, I added this to make it work: --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org

datchung
  • 1,586
  • 17
  • 16
6

I solved a similar problem by adding the --trusted-host pypi.python.org option

Ruben
  • 301
  • 4
  • 13
6

To install any other package I have to use the latest version of pip, since the 9.0.1 has this SSL problem. To upgrade the pip by pip itself, I have to solve this SSL problem first. To jump out of this endless loop, I find this only way that works for me.

  1. Find the latest version of pip in this page: https://pypi.org/simple/pip/
  2. Download the .whl file of the latest version.
  3. Use pip to install the latest pip. (Use your own latest version here)

sudo pip install pip-10.0.1-py2.py3-none-any.whl

Now the pip is the latest version and can install anything.

Jianzhe Gu
  • 61
  • 1
  • 2
5

As posted above by blackjar, the below lines worked for me

pip --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org install xxx

You need to give all three --trusted-host options. I was trying with only the first one after looking at the answers but it didn't work for me like that.

Goodbye StackExchange
  • 21,680
  • 7
  • 47
  • 83
abhi
  • 115
  • 1
  • 8
3

macOS Sierra 10.12.6. Wasn't able to install anything through pip (python installed through homebrew). All the answers above didn't work.

Eventually, upgrade from python 3.5 to 3.6 worked.

brew update
brew doctor #(in case you see such suggestion by brew)

then follow any additional suggestions by brew, i.e. overwrite link to python.

apatsekin
  • 1,066
  • 7
  • 11
  • 1
    if you are on Mac OS 10.12, you original issue might be actually related to the recent TLS deprecation of `pip`. See [this post](https://stackoverflow.com/a/49748494/1526703) for details. `pip` has stopped supporting older security protocol on 10.12 and older versions. – Anupam Apr 12 '18 at 03:51
3

I had the same problem. I just updated the python from 2.7.0 to 2.7.15. It solves the problem.

You can download here.

Günay Gültekin
  • 3,469
  • 6
  • 30
  • 35
  • I just fixed this for the 10th time. Despite understanding the problem on OSX very well and knowing what and where the failure is each "solution" is different form the past. This time the vote goes to 2.7.15 installation on OSX. Simple and effective. Also, there are notes int he release regarding the SSL/OpenSSH issue. Cheers and thanks much! – Marc Jun 28 '18 at 15:55
2

For me, the latest pip (1.5.6) works fine with the insecure nltk package if you just tell it not to be so picky about security:

pip install --upgrade --force-reinstall --allow-all-external --allow-unverified ntlk nltk
hobs
  • 15,252
  • 8
  • 75
  • 93
  • This is an old answer. Which version of `pip` are you on? – hobs Jun 14 '18 at 17:24
  • 1
    I guess the last one. I think I solved the problem by uninstalling everything (Python 2.7, pip etc.) and re-installing everything over and over again – DaniPaniz Jun 16 '18 at 11:35
2

tried

pip --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org install xxx 

and finally worked out, not quite understand why the domain pypi.python.org is changed.

blackjar
  • 21
  • 1
1

You can also use conda to install packages: See http://conda.pydata.org

conda install nltk

The best way to use conda is to download Miniconda, but you can also try

pip install conda
conda init
conda install nltk
Travis Oliphant
  • 1,605
  • 14
  • 10
  • 9
    In fairness, if `pip install` doesn't work, recommending installing another package manager via pip is... well, you know. – Dave Newton Sep 15 '14 at 13:46
  • This actually worked for me. I installed anaconda after I installed python. I had no idea that anaconda had its own installer until I read this. So, this is the answer that worked for me. Travis' comment addresses the chicken/egg thing because he recommended installing miniconda. – Be Kind To New Users Dec 01 '16 at 23:01
1

If you're connecting through a proxy, execute export https_proxy=<your_proxy> (on Unix or Git Bash) and then retry installation.

If you're using Windows cmd, this changes to set https_proxy=<your_proxy>.

lostsoul29
  • 654
  • 1
  • 9
  • 19
1

I did the following on Windows 7 to solve this problem.

c:\Program Files\Python36\Scripts> pip install beautifulsoup4 --trusted-host *

The --trusted-host seems to fix the SSL issue and * means every host.

Of course this does not work because you get other errors since there is no version that satisfies the requirement beautifulsoup4, but I don't think that issue is related to the general question.

1

Just uninstall and reinstall pip packages it will workout for you guys.

Mac os version: high Sierra 10.13.6

python version: 3.7

So I uninstalled the older pip and installed the newest version10.0.0 by entering this:

python3 -m pip uninstall pip setuptools

curl https://bootstrap.pypa.io/get-pip.py | python3

Now my problem was solved. If you are using the python2, you can substitute the python3 with python. I hope it also works for you.

Yash Patel
  • 59
  • 1
  • 4
0

If it is only about nltk, I once faced similar problem. Try following guide for installation. Install NLTK

If you are sure it doesn't work with any other module, you may have problem with different versions of Python installed.

Or Give It a Try to see if it says pip is already installed.:

sudo apt-get install python-pip python-dev build-essential 

and see if it works.

akshayb
  • 1,159
  • 2
  • 15
  • 44
0

I solved this issue with the following steps (on sles 11sp2)

zypper remove pip
easy_install pip=1.2.1
pip install --upgrade scons

Here are the same steps in puppet (which should work on all distros)

  package { 'python-pip':
    ensure => absent,
  }
  exec { 'python-pip':
    command  => '/usr/bin/easy_install pip==1.2.1',
    require  => Package['python-pip'],
  }
  package { 'scons': 
    ensure   => latest,
    provider => pip,
    require  => Exec['python-pip'],
  }
spuder
  • 14,200
  • 14
  • 77
  • 129
0

Use Latest version of python on mac Python 2.7.15rc1 https://bugs.python.org/issue17128

Gaurao
  • 1
  • 1
0

I had this with PyCharm and upgrading pip to 10.0.1 broke pip with "'main' not found in module" error.

I could solve this problem by installing pip 9.0.3 as seen in some other thread. These are the steps I did:

  1. Downloaded 9.0.3 version of pip from https://pypi.org/simple/pip/ (since pip couldn't be used to install it).
  2. Install pip 9.0.3 from tar.gz python -m pip install pip-9.0.3.tar.gz

Everything started to work after that.

Yuriy M
  • 21
  • 2
0

This video tutorial worked for me:

$ curl https://bootstrap.pypa.io/get-pip.py | python
Generic Bot
  • 309
  • 1
  • 4
  • 8
0

I solved this issue by update Python3 Virtualenv on my mac. I reference the site https://gist.github.com/pandafulmanda/730a9355e088a9970b18275cb9eadef3
brew install python3
pip3 install virtualenv