Cómo incluir paquetes de terceros de Python en complementos de Sublime Text 2

Estoy escribiendo un complemento de texto sublime 2 que utiliza un módulo SEAPI.py que en sí mismo importa el módulo de solicitudes .

Como el texto sublime 2 usa su propio intérprete de Python incorporado, no ve el módulo de solicitudes instalado en mi máquina de Ubuntu (me aparece el siguiente error: Error de importación: No hay solicitudes con el nombre del módulo).

La mejor solución que pude encontrar hasta ahora fue copiar el módulo de “solicitudes” (el directorio completo de archivos) de /usr/lib/python2.7/dist-packages/requests en mi directorio de complementos en el directorio de paquetes de texto sublimes. Pero después de eso, dice que no puede encontrar el módulo ‘urllib3’.

¿Existe una mejor manera de importar el módulo de solicitudes para que no tenga que copiar todos los archivos en el directorio de mi complemento?

El código actual que estoy usando es el siguiente:

MyPlugin.py

import sublime import sublime_plugin import SEAPI ... 

SEAPI.py

 import requests try: import simplejson as json except: import json from time import time, sleep ... 

Edición: la respuesta seleccionada es correcta y soluciona mi pregunta principal, pero existe un problema diferente con el uso de la versión actual de “Solicitudes” con el intérprete de texto sublime 2 incrustado. A la Python de ST2 le faltan varios módulos que existen en la versión normal de 2.7 python (como ‘fileio’).

Lo he resuelto con el uso del módulo ‘Solicitudes’ desde aquí: https://github.com/bgreenlee/sublime-github

Y tuve que editar el archivo ‘urllib3 / response.py’ a esto:

 try: from cStringIO import StringIO as BytesIO except ImportError: pass # _fileio doesn't seem to exist in ST's python in Linux, but we don't need it 

sys.path agrupar la distribución de solicitudes completa con su paquete de Python y luego modificar sys.path de Python (donde busca módulos) para apuntar a una carpeta que contiene la carpeta de requests .

  • Descargue la biblioteca de solicitudes desde un PyPi y extráigala manualmente en su carpeta de plugins

  • Antes de importar solicitudes en su complemento, agregue la carpeta corrcet a sys.path para señalar una carpeta donde pueda encontrar solicitudes de importación.

El código (no probado) debería parecerse a algo como esto:

  import sys import os # request-dists is the folder in our plugin sys.path.append(os.path.join(os.path.dirname(__file__), "requests-dist")) import requests 

Esto también asume que las requests setup.py no realizan ningún truco al instalar el módulo utilizando easy_install o pip .

También puede importar las requests zip directamente, ya que Python admite la importación desde archivos ZIP, asumiendo que las solicitudes se distribuyen de forma compatible. Ejemplo (avanzado):

https://github.com/miohtama/ztanesh/blob/master/zsh-scripts/python-lib/zipimporter.py

Más sobre sys.path trick (2004)

http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html

La respuesta de Mikko es buena, pero es posible que haya encontrado una forma un poco más fácil:

 import MyAwesomePlugin.requests 

“MyAwesomePlugin” es el nombre de tu complemento, por supuesto.