【问题标题】:NLTK download SSL: Certificate verify failedNLTK 下载 SSL:证书验证失败
【发布时间】:2016-12-19 09:05:13
【问题描述】:

尝试为 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

【问题讨论】:

    标签: python ssl-certificate nltk


    【解决方案1】:

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

    注意,当你运行nltk.download()时,会弹出一个窗口让你选择要下载的包(下载不会马上自动开始)。

    为了补充接受的答案,以下是将在 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'

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

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

    在您喜欢的 Python IDE 中或通过命令行运行上述代码。

    【讨论】:

    • 像宝石一样工作
    • 是的,当下载到我的用户目录路径时,它就像一个魅力。非常有帮助,因为我没有管理员权限。实际上,我在站在我肩上的管理员的帮助下尝试了接受的答案,但这对我不起作用。
    【解决方案2】:

    这可以通过禁用 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()
    

    【讨论】:

    • 这个对我有用!不是第一个。正如你所说,我需要禁用 SSL!
    • 这比查找丢失每个 OS-X 更新的命令更可靠。
    • 非常感谢,这就像一个魅力。我在 OSX 10.14.6 (Mojave) 上使用 Python 3.8.0,物有所值。
    【解决方案3】:

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

    import nltk
    nltk.download()
    

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

    如果您收到 SSL/证书错误,请运行以下命令

    bash /Applications/Python 3.6/Install Certificates.command

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

    【讨论】:

    • 适用于 Python 3.7.4 和 Mac OSX Mojave
    • 在大苏尔上工作 :)
    • 我比公认的答案更喜欢这个解决方案,因为它涉及使 Python 的 SSL 检查真正起作用,而不是完全禁用 SSL 证书检查。可能风险较低,但公认的答案似乎使您面临 MITM 攻击。
    【解决方案4】:

    下载器脚本已损坏。作为临时解决方法,可以从here 手动下载 punkt 标记器,然后将解压缩的文件夹放在相应的位置。每个操作系统的默认文件夹是:

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

    【讨论】:

      【解决方案5】:

      在 finder 中搜索“Install Certificates.command”并打开它。

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

          python3
          import nltk
          nltk.download()
      

      【讨论】:

      • 谢谢。工作正常!对于 macOS 10.13.6
      【解决方案6】:

      您只需要执行这个简单的步骤来安装证书

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

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

      【讨论】:

        【解决方案7】:

        我的解决办法是:

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

        【讨论】:

          【解决方案8】:

          有一种非常简单的方法可以解决所有这些问题,正如在正式错误报告中所写的那样,对于最近遇到此问题(例如 2019 年)并使用 MacOS 的其他人来说。来自https://bugs.python.org/issue28150 的错误报告:

          ...有一个简单的可双击或命令行可运行的脚本(“/Applications/Python 3.6/Install Certificates.command”)做两件事:1. 使用 pip 安装 certifi 和 2. 创建OpenSSL 目录中指向 certifi 安装包位置的符号链接。

          只需在 MacOS 上运行“Install Certificates.command”脚本即可(撰写本文时为 10.15 测试版),我已关闭并开始运行。

          【讨论】:

          • 使用刚刚发布的 MacOS 10.15,无法找到“Install Certificates.command”文件。没有/Applications/Python 3.x 目录。
          • 您使用的是哪个版本的 Python?
          • Python 3.7.3 来自 /usr/bin/python3 预装在 macOS 10.15 上
          • 我也在使用 Python 3,但没有预装。也许这就是区别。尝试安装另一个版本并查看该目录是否存在以便您执行这些操作。在以后的版本中(在 3.6 之后)或者目录被改变了,尽管我对此表示怀疑。我会在我回到我的 Mac 时进行验证。
          【解决方案9】:

          我的解决方案没有任何效果。我通过 GUI 导航到 Python 3.7 文件夹,在终端中打开了“Certificates.command”文件,SSL 问题立即得到解决。

          【讨论】:

            【解决方案10】:

            这就是我为 MAC OS 解决的方法。 最初安装 nltk 后,我收到 SSL 错误。

            解决方案: 转到

            cd /Applications/Python\ 3.8
            

            运行命令

            ./Install\ Certificates.command
            

            现在如果你再试一次,它应该可以工作了!

            非常感谢this的文章!

            【讨论】:

              【解决方案11】:

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

              如果您使用的是 Linux (Ubuntu)

              ~$ sudo apt-get install ca-certificates
              

              应该可以解决问题。

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

              【讨论】:

                【解决方案12】:

                首先进入路径 /Applications/Python 3.6/ 并运行 安装 Certificates.command

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

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

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

                【讨论】:

                  【解决方案13】:

                  聚会有点晚了,但我刚刚将 Certificates.command 输入到 Spotlight 中,它找到并运行了它。几秒钟内全部搞定。

                  我正在运行 mac Catalina 并使用 Homebrew 安装的 python 3.7

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2019-03-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-09-28
                    • 2021-10-08
                    • 2016-11-26
                    • 1970-01-01
                    相关资源
                    最近更新 更多