NLTK download SSL: Certificate verify failed

PythonSsl CertificateNltk

Python Problem Overview


I get the following error when trying to install Punkt for nltk:

nltk.download('punkt')    
 [nltk_data] Error loading Punkt: <urlopen error [SSL: [nltk_data]     CERTIFICATE_VERIFY_FAILED] certificate verify failed
 [nltk_data]     (_ssl.c:590)>
False

Python Solutions


Solution 1 - Python

TLDR: Here is a better solution: https://github.com/gunthercox/ChatterBot/issues/930#issuecomment-322111087

Note that when you run nltk.download(), a window will pop up and let you select which packages to download (Download is not automatically started right away).

To complement the accepted answer, the following is a complete list of directories that will be searched on Mac (not limited to the one mentioned in the accepted answer):

    - '/Users/YOUR_USERNAME/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - '/Users/YOUR_USERNAME/YOUR_VIRTUAL_ENV_DIRECTORY/nltk_data'
    - '/Users/YOUR_USERNAME/YOUR_VIRTUAL_ENV_DIRECTORY/share/nltk_data'
    - '/Users/YOUR_USERNAME/YOUR_VIRTUAL_ENV_DIRECTORY/lib/nltk_data'

In case the link above dies, here is the solution pasted in its entirety:

import nltk
import ssl

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context

nltk.download()

Run the above code in your favourite Python IDE or via the command line.

Solution 2 - Python

This works by disabling SSL check!

import nltk
import ssl

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context
    
nltk.download()

Solution 3 - Python

Run the Python interpreter and type the commands:

import nltk
nltk.download()

from here: http://www.nltk.org/data.html

if you get an SSL/Certificate error, run the following command

bash /Applications/Python 3.6/Install Certificates.command

from here: https://stackoverflow.com/questions/41691327/ssl-sslerror-ssl-certificate-verify-failed-certificate-verify-failed-ssl-c#41692664

Solution 4 - Python

The downloader script is broken. As a temporal workaround can manually download the punkt tokenizer from here and then place the unzipped folder in the corresponding location. The default folders for each OS are:

  • Windows: C:\nltk_data\tokenizers

  • OSX: /usr/local/share/nltk_data/tokenizers

  • Unix: /usr/share/nltk_data/tokenizers

Solution 5 - Python

Search 'Install Certificates.command' in finder and open it.

Then do following steps in terminal:

    python3
    import nltk
    nltk.download()

Solution 6 - Python

You just need to Install the certificate doing this simple step

In the python application folder double-click on the file 'Certificates.command'

this will make a prompt window show in your screen and basically will automatically install the certificate for you, close this window and try again.

Solution 7 - Python

This is how I solved it for MAC OS. Initially after installing nltk, I was getting the SSL error.

Solution: Goto

cd /Applications/Python\ 3.8

Run the command

./Install\ Certificates.command

Now if you try again, it should work!

Thanks a lot to this article!

Solution 8 - Python

My solution is:

  • Download punkt.zip from here and unzip
  • Create nltk_data/tokenizers folders under home folder
  • Put punkt folder under tokenizers folder

Solution 9 - Python

There is a very simple way to fix all of this as written in the formal bug report for anyone else coming across this problem recently (e.g. 2019) and using MacOS. From the bug report at https://bugs.python.org/issue28150:

> ...there is a simple double-clickable or command-line-runnable script ("/Applications/Python 3.6/Install Certificates.command") that does two things: 1. uses pip to install certifi and 2. creates a symlink in the OpenSSL directory to certifi's installed bundle location.

Simply running the "Install Certificates.command" script worked for me on MacOS (10.15 beta as of this writing) and I was off and running.

Solution 10 - Python

My solution after nothing worked. I navigated, via the GUI to the Python 3.7 folder, opened the 'Certificates.command' file in terminal and the SSL issue was immediately resolved.

Solution 11 - Python

A bit late to the party but I just entered Certificates.command into Spotlight which found it and ran it. All fixed in seconds.

I'm running mac Catalina and using python 3.7 installed by Homebrew

Solution 12 - Python

It means that you are not using HTTPS to work consistently with other run time dependencies for Python etc.

If you are using Linux (Ubuntu)

~$ sudo apt-get install ca-certificates

Should solve the issue.

If you are using this in a script with a docker file, you have to make sure you have install the the ca-certificates modules in your docker file.

Solution 13 - Python

First go to the path /Applications/Python 3.6/ and run Install Certificates.command

You will admin rights for the same.

If you are unable to download it, then as other answer suggest you can download directly and place it. You need to place them in the following directory structure.

> nltk_data
          > corpora
                   > brown
                   > conll2000
                   > movie_reviews
                   > wordnet
          > taggers
                   > averaged_perceptron_tagger
          > tokenizers
                      > punkt

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser3429986View Question on Stackoverflow
Solution 1 - PythonfstangView Answer on Stackoverflow
Solution 2 - PythonishwardgretView Answer on Stackoverflow
Solution 3 - PythonAdiView Answer on Stackoverflow
Solution 4 - PythonelyaseView Answer on Stackoverflow
Solution 5 - PythonyashView Answer on Stackoverflow
Solution 6 - Pythonthiago89View Answer on Stackoverflow
Solution 7 - PythonSreekiran A RView Answer on Stackoverflow
Solution 8 - PythongocenView Answer on Stackoverflow
Solution 9 - PythonMichael HawkinsView Answer on Stackoverflow
Solution 10 - PythonCormac O'KeeffeView Answer on Stackoverflow
Solution 11 - PythonChezView Answer on Stackoverflow
Solution 12 - PythonenkidooView Answer on Stackoverflow
Solution 13 - PythonRahul RView Answer on Stackoverflow