cómo incluir SSL con Python en MacOS

Mientras construía python desde la fuente en un MacOS, accidentalmente sobrescribí la python que venía con MacOS, ahora no tiene SSL. Intenté construir de nuevo ejecutando la opción --with-ssl

 ./configure --with-ssl 

Pero cuando posteriormente corrí make , decía esto.

 Python build finished, but the necessary bits to build these modules were not found: _bsddb _ssl dl imageop linuxaudiodev ossaudiodev readline spwd sunaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name. 

No me queda claro al ver setup.py lo que se supone que debo hacer para encontrar los “bits necesarios”. ¿Qué puedo hacer para construir Python con SSL en MacOS?

Solo abre setup.py y encuentra el método detect_modules() . Tiene algunas líneas como (2.7.11 para mi):

  # Detect SSL support for the socket module (via _ssl) search_for_ssl_incs_in = [ '/usr/local/ssl/include', '/usr/contrib/ssl/include/' ] ssl_incs = find_file('openssl/ssl.h', inc_dirs, search_for_ssl_incs_in ) if ssl_incs is not None: krb5_h = find_file('krb5.h', inc_dirs, ['/usr/kerberos/include']) if krb5_h: ssl_incs += krb5_h ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, ['/usr/local/ssl/lib', '/usr/contrib/ssl/lib/' ] ) if (ssl_incs is not None and ssl_libs is not None): exts.append( Extension('_ssl', ['_ssl.c'], include_dirs = ssl_incs, library_dirs = ssl_libs, libraries = ['ssl', 'crypto'], depends = ['socketmodule.h']), ) else: missing.append('_ssl') 

Así que parece que necesitas SSL y Kerberos. Kerberos viene instalado con Mac. Así que necesitas instalar openssl . Puedes hacerlo con brew :

 brew install openssl 

openssl encabezados openssl podrían instalarse en una ruta diferente a la que Python buscará. Asi que problema

 locate ssl.h 

y agregue la ruta a search_for_ssl_incs_in . Por ejemplo para mi es:

 /usr/local/Cellar/openssl/1.0.2d_1/include/openssl/ssl.h 

Así que debería agregar /usr/local/Cellar/openssl/1.0.2d_1/include/ a search_for_ssl_incs_in .

No olvides que estos son para Python 2.7.11. Pero el proceso debe ser el mismo.

Espero que ayude.