【问题标题】:Where to get RAND_egd?从哪里获得 RAND_egd?
【发布时间】:2016-02-04 07:40:18
【问题描述】:

我正在 GAE 中测试一个应用程序。它在部署到 Google 的服务器时运行良好,但在本地崩溃,因为它cannot import name RAND_egd。它发生的地方在 C:\Program Files(x86)Google\google_appengine\google\appengine\dist27\socket.py 第 73 行:

from _ssl import RAND_add, RAND_egd, RAND_status, SSL_ERROR_ZERO_RETURN, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE, SSL_ERROR_WANT_X509_LOOKUP, SSL_ERROR_SYSCALL, SSL_ERROR_SSL, SSL_ERROR_WANT_CONNECT, SSL_ERROR_EOF, SSL_ERROR_INVALID_ERROR_CODE

根据这个SO answer,解决方案是注释掉导入,但那是在标准socket.py 中。我从 Google 提供的文件中删除了RAND_egd,它现在可以工作了。

这个问题的正确解决方案是什么?在 socket.py 中总是不需要 RAND_egd 吗? Google 提供的 socket.py 是否与 Google 网络服务器中的不同?

【问题讨论】:

    标签: python google-app-engine ssl openssl


    【解决方案1】:

    您的解决方案没有任何问题。这是由于随 SDK 1.9.38 分发的 socket.py 中的一个错误。

    Windows 不支持 RAND_egd 库。

    如果不是 Windows,有一个更优雅的解决方法可以有条件地导入库。

    您必须对文件进行更改: C:\Program Files (x86)\Google\google_appengine\google\appengine\dist27\socket.py

    那么你就可以使用高于 2.7.9 的 Python 和 Windows App Engine SDK,

    此处描述了文件所需的更改 https://code.google.com/p/googleappengine/issues/detail?id=12783

    您需要管理员权限才能修改文件。在可写位置编辑文件然后将其复制到只读位置可能更容易。

    检查此问题的状态。希望新版本的 SDK 将意味着不再需要该补丁。否则,请在每次升级 App Engine SDK 后重复此过程。

    【讨论】:

    • 我正在将 App Engine 安装到新计算机上,现在看来必须通过 Google Cloud SDK 安装(也许我弄错了?)无论如何,socket.py 的位置是:C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\dist27\socket.py
    • 此外,上述谷歌组有两个变化。第一个是实际添加 the other SO post 中描述的条件导入
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多