SSL error downloading NLTK data

PythonMacosSslSsl CertificateNltk

Python Problem Overview


I am trying to download NLTK 3.0 for use with Python 3.6 on Mac OS X 10.7.5, but am getting an SSL error:

import nltk
nltk.download()

enter image description here

I downloaded NLTK with a pip3 command: sudo pip3 install -U nltk.

Changing the index in the NLTK downloader allows the downloader to show all of NLTK's files, but when one tries to download all, one gets another SSL error (see bottom of photo):

enter image description here

I am relatively new to computer science and am not at all savvy with respect to SSL.

My question is how to simply resolve this issue?


Here is a similar question by a user who is having the same problem:

https://stackoverflow.com/questions/38725583/unable-to-download-nltk-data

I decided to post a new question with screenshots, since my edit to that other question was rejected.

Similar questions which I did not find helpful:

https://stackoverflow.com/questions/38916452/nltk-download-ssl-certificate-verify-failed

https://stackoverflow.com/questions/27658409/downloading-error-using-nltk-download

Python Solutions


Solution 1 - Python

You don't need to disable SSL checking if you run the following terminal command:

/Applications/Python 3.6/Install Certificates.command

In the place of 3.6, put your version of Python if it's an earlier one. Then you should be able to open your Python interpreter (using the command python3) and successfully run nltk.download() there.

This is an issue wherein urllib uses an embedded version of OpenSSL that not in the system certificate store. Here's an answer with more information on what's going on.

Solution 2 - Python

Please see answer by @doctorBroctor. It is more correct and safer to use. Leaving answer below as it might be useful for something else.

https://stackoverflow.com/a/42890688/1167890


This will work by disabling SSL checking.

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

In Finder, search for Python 3.6. It will appear under Application folder. Expand the Python 3.6 folder. Then install certificates using "Install Certificates.command".

enter image description here

Solution 4 - Python

To install in codestar only way is manually download modules and save them into nltk_data folder, create a lambda variable environment NLTK_DATA with valie ./nltk_data.

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
QuestionDyingIsFunView Question on Stackoverflow
Solution 1 - PythondoctorBroctorView Answer on Stackoverflow
Solution 2 - PythonSimon O'DohertyView Answer on Stackoverflow
Solution 3 - PythonAshish TomarView Answer on Stackoverflow
Solution 4 - PythonbernardoView Answer on Stackoverflow