ImportError:无法导入名称RAND_egd

Mil*_*ano 13 python import ssl executable py2exe

我试图使用py2exe创建一个exe文件.我最近更新了Python从2.7.7到2.7.10以便能够使用requests- proxies.

在更新之前一切正常但现在,最近创建的exe文件,引发了这个错误:

    Traceback (most recent call last):
  File "puoka_2.py", line 1, in <module>
    import mLib
  File "mLib.pyc", line 4, in <module>
  File "urllib2.pyc", line 94, in <module
  File "httplib.pyc", line 71, in <module
  File "socket.pyc", line 68, in <module>
ImportError: cannot import name RAND_egd
Run Code Online (Sandbox Code Playgroud)

它可能可以通过更改optionssetup.py文件来修复,但我无法弄清楚我必须在那里写什么.我试过options = {'py2exe': {'packages': ['requests','urllib2']}})但没有成功.

它作为Python脚本运行,但不作为exe.

有谁知道该怎么办?

编辑:

我试图setup.py将此导入文件归档:from _ssl import RAND_egd 它表示无法导入.

EDIT2:Setup.py:

from distutils.core import setup
import py2exe
# from _ssl import RAND_egd
setup(
  console=['puoka_2.py'],
  options = {'py2exe': {'packages': ['requests']}})
Run Code Online (Sandbox Code Playgroud)

Mil*_*ano 15

据谷歌称,这似乎是一个非常罕见的错误.我不确切地知道出了什么问题,但我找到了一个解决方法,所以如果有人遇到这个问题,也许这个答案会有所帮助.

转到socket.py文件并搜索RAND_egd.有一段代码(在我的例子中是第67行):

from _ssl import SSLError as sslerror
from _ssl import \
     RAND_add, \
     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
try:
    from _ssl import RAND_egd
except ImportError:
    # LibreSSL does not provide RAND_egd
    pass
Run Code Online (Sandbox Code Playgroud)

你需要做的就是评论5行:

  #try:
        #from _ssl import RAND_egd
  #except ImportError:
        ## LibreSSL does not provide RAND_egd
        #pass
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它会引发ImportError因为有一个try - exceptpass所以不应该提出错误但它帮助我成功运行该exe文件.

编辑:警告:我不知道它是否会导致一些问题.我没有遇到任何问题.