从哪里得到RAND_egd?
Where to get RAND_egd?
我正在 GAE 中测试一个应用程序。它在部署到 Google 的服务器时运行良好,但在本地它崩溃了,因为它 cannot import name RAND_egd
。它发生的地方在 C:\Program Files(x86)Google\google_appengine\google\appengine\dist27\socket.py line 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
根据此 ,解决方案是注释掉导入,但那是在标准 socket.py
中。我从 Google 提供的文件中删除了 RAND_egd
,现在它起作用了。
这个问题的正确解决方案是什么?在 socket.py 中总是不需要 RAND_egd 吗? Google 提供的 socket.py 与 Google 的网络服务器中的不一样吗?
你的解决方案没有问题。这是由于随 SDK 1.9.38 分发的 socket.py 中的一个错误。
Windows 不支持 RAND_egd 库。
有一个更优雅的解决方法,如果没有 Windows。
有条件地导入库
您必须对文件进行更改:
C:\Program Files (x86)\Google\google_appengine\google\appengine\dist27\socket.py
然后您可以使用 Python 晚于 2.7.9 的 Windows App Engine SDK,
此处描述了所需的文件更改
https://code.google.com/p/googleappengine/issues/detail?id=12783
您需要管理员权限才能修改文件。在可写位置编辑文件然后将其复制到只读目标可能更容易。
检查此问题的状态。希望新版本的 SDK 意味着不再需要补丁。否则,在每次升级 App Engine SDK 后重复此过程。
我正在 GAE 中测试一个应用程序。它在部署到 Google 的服务器时运行良好,但在本地它崩溃了,因为它 cannot import name RAND_egd
。它发生的地方在 C:\Program Files(x86)Google\google_appengine\google\appengine\dist27\socket.py line 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
根据此 socket.py
中。我从 Google 提供的文件中删除了 RAND_egd
,现在它起作用了。
这个问题的正确解决方案是什么?在 socket.py 中总是不需要 RAND_egd 吗? Google 提供的 socket.py 与 Google 的网络服务器中的不一样吗?
你的解决方案没有问题。这是由于随 SDK 1.9.38 分发的 socket.py 中的一个错误。
Windows 不支持 RAND_egd 库。
有一个更优雅的解决方法,如果没有 Windows。
有条件地导入库您必须对文件进行更改: C:\Program Files (x86)\Google\google_appengine\google\appengine\dist27\socket.py
然后您可以使用 Python 晚于 2.7.9 的 Windows App Engine SDK,
此处描述了所需的文件更改 https://code.google.com/p/googleappengine/issues/detail?id=12783
您需要管理员权限才能修改文件。在可写位置编辑文件然后将其复制到只读目标可能更容易。
检查此问题的状态。希望新版本的 SDK 意味着不再需要补丁。否则,在每次升级 App Engine SDK 后重复此过程。