2012-02-12 12 views
5

¿Puedo usar módulos Python 2.7 desde Python 2.6? ¿O hacer algo para lograr el mismo efecto?¿Puedo usar el módulo de subproceso Python 2.7 desde Python 2.6?

Estoy limitado a usar Python 2.6, pero existe un issue en el módulo subprocess provisto por Python 2.6. Esto está arreglado en Python 2.7. Tengo curiosidad si configuro esto usando pip (o equivalente) para eludir el error temporalmente hasta actualizar un día. ¿Cómo voy a hacer esto?

+3

¿Cuál es el error? Probablemente haya una solución que sea más fácil que tratar de mezclar versiones de Python (que, en general, no es posible). –

+0

No es verdad que 'subprocess' está escrito completamente en Python. En Windows, también hay una [parte escrita en C] (http://hg.python.org/cpython/file/e0c353a43c7d/PC/_subprocess.c). –

+0

Bummer. Me refiero a este problema: http://bugs.python.org/issue9127 (pregunta actualizada, también). – sholsapp

Respuesta

1

Etienne Perot sugirió usar un backport de subproceso Python 3.2 disponible en http://code.google.com/p/python-subprocess32/ en lugar de piratear la instalación de Python.

Esto me permite instalar el módulo en los paquetes de sitio de mi entorno virtual, y parchear el código de subproceso con http://hg.python.org/cpython/rev/767420808a62 para corregir el error mencionado en cuestión. Después, un simple import subprocess32 as subprocess solucionó el problema.

2

Sí, generalmente. La diferencia entre 2.6 y 2.7 no es muy grande, ya que se supone que 2.7 es un puente entre 2.6 y 3.0. Como resultado, la mayoría de los módulos de Python para 2.7 funcionarán en ambas versiones (generalmente mejor en 2.6 que 3.0).

¡Por supuesto, la única forma segura de saber la respuesta es intentarlo!

EDIT: Para que quede claro, no recomiendo que haga esto en absoluto, si puede elegir. Hackear una instalación de Python solo por un error de Python en un módulo es una mala idea.

+0

Supongo que mi pregunta es, ¿cómo se podría lograr esto? No soy tan versado en el empaque de Python como me gustaría ser todavía. – sholsapp

+0

Simplemente instale el paquete de la misma manera que lo haría en Python 2.7. Por lo general, '/usr/bin/python2.7 setup.py install' ->' /usr/bin/python2.6 setup.py install'. La única diferencia es el intérprete de Python al que llamas para instalar el módulo. Ciertos módulos pueden tener instrucciones de instalación adicionales, para lo cual deberá averiguarlo o publicar el nombre del módulo en cuestión (y si tiene problemas para instalarlo, probablemente tenga que ir en otra pregunta) –

+1

Si usted es usando 'pip' para instalar paquetes, puede especificar el entorno de Python para instalar paquetes usando' --environment =/usr/bin/python2.6' o '--environment =/path/to/environment'. –

1

Si realmente desea permanecer en Python 2.6, pero también quieren corregir este error, que podría sugerir compilar Python 2.6 desde el código fuente, pero también aplicar el código de corrección de errores correspondiente al módulo subprocess de 2,7.

Terminará con una versión personalizada de Python 2.6. Por supuesto, si está atascado en el estándar 2.6 porque no puede instalar ninguna versión diferente de, entonces esto no ayudará.