NLTK 下载 SSL:证书验证失败

NLTK download SSL: Certificate verify failed

我在尝试为 nltk 安装 Punkt 时遇到以下错误:

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

下载脚本损坏。作为暂时的解决方法,可以从 here 手动下载 punkt tokenizer,然后将解压缩的文件夹放在相应的位置。每个 OS 的默认文件夹是:

  • Windows: C:\nltk_data\tokenizers
  • OSX: /usr/local/share/nltk_data/tokenizers
  • Unix:/usr/share/nltk_data/tokenizers

这意味着您没有使用 HTTPS 来与 Python 等的其他 运行 时间依赖性保持一致

如果您正在使用 Linux (Ubuntu)

~$ sudo apt-get install ca-certificates

应该可以解决问题。

如果您在带有 docker 文件的脚本中使用它,您必须确保在 docker 文件中安装了 ca-certificates 模块。

运行 Python 解释器并键入命令:

import nltk
nltk.download()

从这里开始:http://www.nltk.org/data.html

如果出现 SSL/Certificate 错误,运行 执行以下命令

bash /Applications/Python 3.6/Install Certificates.command

从这里开始:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

先去路径/Applications/Python3.6/和运行 安装 Certificates.command

您将拥有相同的管理员权限。

如果您无法下载,那么按照其他回答建议您可以直接下载并放置。您需要将它们放在以下目录结构中。

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

TLDR:这是一个更好的解决方案:https://github.com/gunthercox/ChatterBot/issues/930#issuecomment-322111087

注意当你运行nltk.download()时,会弹出一个window让你select下载哪些包(下载不会马上自动开始) .

为了补充已接受的答案,以下是将在 Mac 上搜索的目录的完整列表(不限于已接受的答案中提到的目录): - '/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'

如果上面的 link 失效,这里是完整粘贴的解决方案:

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()

运行以上代码在你最喜欢的PythonIDE或通过命令行。

我的解决方案是:

  • here 下载 punkt.zip 并解压
  • 在主文件夹下创建 nltk_data/tokenizers 个文件夹
  • 将 punkt 文件夹放在 tokenizers 文件夹下

我的解决方案无效。我通过 GUI 导航到 Python 3.7 文件夹,在终端中打开 'Certificates.command' 文件,SSL 问题立即得到解决。

这可以通过禁用 SSL 检查来实现!

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()

对于最近(例如 2019 年)遇到此问题并使用 MacOS 的任何其他人,有一种非常简单的方法可以解决所有这些问题,如正式错误报告中所写。来自 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.

只是 运行 "Install Certificates.command" 脚本在 MacOS(撰写本文时为 10.15 beta)上对我有用,我离开了 运行。

您只需执行此简单步骤即可安装证书

在 python 应用程序文件夹中双击文件 'Certificates.command'

这将在您的屏幕上显示 window 提示,基本上会自动为您安装证书,关闭此 window 并重试。

在查找器中搜索 'Install Certificates.command' 并打开它。

然后在终端中执行以下步骤:

    python3
    import nltk
    nltk.download()

参加晚会有点晚了,但我刚 Certificates.command 进入 Spotlight 就找到了它 运行。全部在几秒钟内修复。

我是 运行 mac Catalina,使用 python 3.7 由 Homebrew 安装

我就是这样解决 MAC OS 的。 最初安装 nltk 后,我遇到了 SSL 错误。

解决方法: 转到

cd /Applications/Python\ 3.8

运行命令

./Install\ Certificates.command

现在,如果您再试一次,应该可以了!

非常感谢 this 文章!