“Ningún módulo llamado _scproxy” en OSX

Estoy en OSX 10.6 con Python 2.6 preinstalado y me gustaría instalar los paquetes de Python a través de easy_install o setup.py (en un paquete descargado). En mi caso estoy tratando de instalar MySQLdb. En ambos casos obtengo una traza de stack que termina así:

... File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/command/easy_install.py", line 21, in  from setuptools.package_index import PackageIndex, parse_bdist_wininst File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/package_index.py", line 2, in  import sys, os.path, re, urlparse, urllib2, shutil, random, socket, cStringIO File "/System/Library/Frameworks/Python/framework/Versions/2.6/lib/python2.6/urllib2.py", line 111, in  from urllib import (unwrap, unquote, splittype, splithost, quote, File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1335, in  from _scproxy import _get_proxy_settings, _get_proxies ImportError: No module named _scproxy 

La instalación de python es la versión 2.6.1 preinstalada sin modificar, excepto que agregué los archivos de origen a la carpeta lib. Un “find /System/Library/Frameworks/Python.framework/ -name scproxy ” no produce ningún resultado.

¿Cómo puedo instalar el módulo faltante?

Fondo

_scproxy es un ayudante de urllib específico de Mac que interactúa con bibliotecas específicas del SO para realizar solicitudes HTTP. Parece que falta en mi sistema también (10.6.7). Preliminar, creo que parece ser un problema con el sistema Python build (no puedo encontrar nada que se parezca a /System/Libraries ).

Solución Hack-O-Rama

Es (tipo de) posible instalar el módulo faltante. Pero primero un consejo:

No deberías jugar demasiado con la instalación de Python de tu sistema. Hágase un favor aprendiendo a usar virtualenv y aplique operaciones potencialmente peligrosas en virtualenv nuevos y nuevos. De esa manera, su sistema no se verá afectado por la instalación de paquetes problemáticos.

De todos modos: Python en Snow Leopard es 2.6.1. Hice mis experimentos con la versión 2.6, 2.6.6 más reciente, una forma más segura sería descargarla en su lugar. Sin embargo, mi experiencia es que varios lanzamientos de puntos funcionan bien juntos.

De todos modos, descargué 2.6.6 en mi directorio ~/src como este:

 ~/src/ext/python$ wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz ~/src/ext/python$ tar zxf Python-2.6.6.tgz ~/src/ext/python$ cd Python-2.6.6 ~/src/ext/python$ ./configure 

consola de spam como locos

 ~/src/ext/python$ make sharedmods 

Esperemos que no haya errores, más consola de spam.

Localice el _scproxy.so recién construido:

 ~/src/ext/python/Python-2.6.6$ find . -name '_scproxy.so' ./build/lib.macosx-10.4-x86_64-2.6/_scproxy.so # <- exact path may vary 

Ahora puede copiar su _scproxy.so en /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynlo ad (y luego recuerde que hay un módulo un tanto ajeno de fabricación propia en su sistema Pitón). O, mucho mejor, agréguelo al subdirectorio lib/python2.6/ de un virtualenv. Después de hacer estas cosas, podría importar _scproxy de la manera indicada en su rastreo:

 Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from _scproxy import _get_proxy_settings, _get_proxies >>> 

Esta es una urllib indicación de que la instalación de paquetes a través de un método que requiera urllib requiere el urllib _scproxy. Sin embargo, a partir de ahí, continuará solo, ya que no quiero realizar una prueba de instalación de MySQL.