2009-06-23 21 views
14

La forma más simple de tratar con las instalaciones de paquete python, hasta ahora, ha sido verificar el origen del sistema de control de origen y luego agregar un enlace simbólico en el dist python -paquete de paquetes.Instalación del paquete Python usando pip o easy_install desde repos

Claramente, dado que el control de fuente proporciona el control completo para degradar, actualizar a cualquier rama, etiqueta, funciona muy bien.

¿Hay alguna manera de utilizar uno de los instaladores de paquetes (instalación fácil o pip u otro), se puede lograr lo mismo.

easy_install obtiene el tar.gz y lo instala utilizando la instalación de setup.py que se instala en la carpeta dist-packages en python2.6. ¿Hay alguna manera de configurarlo, o pip para usar el sistema de control de versión de origen (SVN/GIT/Hg/Bzr) en su lugar.

Respuesta

26

Usando pip esto es bastante fácil. Por ejemplo:

pip install -e hg+http://bitbucket.org/andrewgodwin/south/#egg=South 

Pip va a clonar el repositorio automáticamente las fuentes y ejecute "setup.py desarrollar" para que lo instale en su entorno (que es de esperar es una virtualenv). Git, Subversion, Bazaar y Mercurial son compatibles.

También puede ejecutar "congelación de pip" y obtendrá una lista de sus paquetes instalados actualmente con sus versiones exactas (incluyendo, para las instalaciones desarrolladas, la revisión exacta del VCS).Puede poner esto directamente en un archivo de requisitos y luego ejecutar

pip install -r requirements.txt 

para instalar el mismo conjunto de paquetes en las mismas versiones exactas.

+0

De hecho, actualmente uso el tronco de pip, que viene con la desinstalación también, que usted escribió. –

+0

Genial. Sí, pensé que lo tenías todo bajo control, pero quería asegurarme de que esta respuesta estuviera disponible para cualquier otra persona que tuviese dudas. –

11

Si descarga o revisa la distribución fuente de un paquete, el que tiene su "setup.py" dentro del mismo, entonces, si el paquete se basa en las "herramientas de configuración" (que también facilitan la instalación fácil), se puede mover en ese directorio y decir:

$ python setup.py develop 

y va a crear los enlaces simbólicos correctos en dist-paquetes para que los archivos .py en la distribución de fuentes son las que se hayan importado, en lugar de copias instalados por separado (que es lo que haría "setup.py install": crea copias separadas que no cambian inmediatamente cuando editas el código fuente para intentar un cambio).

Como indica la otra respuesta, debe intentar leer la documentación de "setuptools" para obtener más información. "setup.py develop" es una característica realmente útil. Intenta usarlo en combinación con un virtualenv, y se puede "setup.py desarrollar" sin dolor y sin perder su pitón de todo el sistema con paquetes sólo se está desarrollando en forma temporal:

http://pypi.python.org/pypi/virtualenv 
+2

+1: virtualenv es esencial al hacer el desarrollo python – codeape

+0

virtualenv es esencial <3 –

+3

También tenga en cuenta que "pip install -e". es equivalente a "python setup.py develop", excepto que también funciona con paquetes que no usan setuptools en su setup.py (porque pip los obliga a usarlo de todos modos;>) –

4

easy_install tiene soporte para la descarga específica versiones. Por ejemplo:

easy_install python-dateutil==1.4.0 

Instalará v1.4, mientras que la última versión 1.4.1 se seleccionará si no se especificó ninguna versión.

También hay soporte para check-ups svn, pero el uso de eso no le da muchos beneficios de su versión manual. Vea el manual para más información arriba.

Ser capaz de cambiar a ramas específicas rara vez es útil a menos que esté desarrollando los paquetes en cuestión, y de todos modos no es una buena idea instalarlos en paquetes de sitio de todos modos.

+0

en caso de que no sea python-dateutil = = 1.4.0 (doble igual)? – typeoneerror

+0

sí, debería. Lo arreglé. –

0

easy_install también acepta una URL para el árbol fuente. Funciona al menos cuando las fuentes están en Subversion.

Cuestiones relacionadas