2011-06-27 12 views
6

setup.py de mi paquete X usa setuptools para instalar opcionalmente un paquete extra Y, a través del parámetro extras_require.Instalar extras locales en Python

Ahora el paquete Y desapareció de PyPi y, hasta donde puedo decir, desde Internet visible. easy_install X[Y] falla con error: Could not find suitable distribution for Y.

Sin embargo, todavía tengo una copia local del tarball de Y. Y es un paquete puro de Python.

¿Cuál es la mejor manera de modificar setup.py para permitir este (opcional) extra local?


EDITAR: La solución está destinada a ser temporal, hasta que encuentre un reemplazo adecuado. No hago desee iniciar oficialmente el mantenimiento Y yo :)

Respuesta

1

Encontré una solución rápida a través de la opción dependency_links de setuptools.

  1. Cargue el tarball de Y a alguna url http://URL_Y.
  2. Agregue la línea: dependency_links = ['http://URL_Y'], a mi setup.py.

Ahora easy_install X[Y] funciona y no tuve que registrarme en ningún sitio. Lo eliminaré de URL_Y en cuanto tenga una solución adecuada.

1

Usted podría subclase setuptools.Command y luego sobrecargar el comando predeterminado install. Entonces podrías tener que ejecutar un subproceso que instale la dependencia. Es un truco, pero eso es lo que estabas pidiendo!

En setup.py:

from setuptools import Command 
class MyInstallCommand(Command): 
    # Overload the 'install' command to do default install but also install 
    # your provided tarball. Blah blah blah read the docs on what to do here. 

setup(
    name='mypackage', 
    # etc ... and then... 
    # Overload the 'install' command 
    cmdclass={ 
     'install': MyInstallCommand, 
    } 
) 

estoy simplificando demasiado grueso, pero esta es la esencia básica.

+0

thx @jathanism, si surgen problemas con mi solución, probaré ésta (¡artillería pesada!) :) – Radim

Cuestiones relacionadas